zoukankan      html  css  js  c++  java
  • xml处理模块

    假如有下面这样简单的xml内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <data>
        <person name="LiPanHui">
            <age>28</age>
            <sex>man</sex>
            <like name="WuTao"/>
        </person>
        <person name="XuQianHua">
            <age>30</age>
            <sex>man</sex>
            <like name="ChenWeiMeng"/>
        </person>
    </data>

    读文档的内容

    >>> import xml.etree.ElementTree as ET                                                                                  
    >>> tree = ET.parse("test.xml")
    >>> root = tree.getroot()
    >>> print(root.tag)
    data

    >>> for child in root: # 遍历xml文档
    ... print(child.tag, child.attrib)
    ... for i in child:
    ... print(i.tag, i.text)
    ...
    person {'name': 'LiPanHui'}
    age 28
    sex man
    like None
    person {'name': 'XuQianHua'}
    age 30
    sex man
    like None

    >>> for node in root.iter('age'): # 只遍历age节点
    ... print(node.tag, node.text)
    ...
    age 28
    age 30

    修改和删除xml文档的内容

    # 修改
    >>> tree = ET.parse("test.xml")                                                                                         
    >>> root = tree.getroot()
    >>> for node in root.iter('age'):
    ... new_age = int(node.text) + 1
    ... node.text = str(new_age)
    ... node.set('updated', 'yes')
    ...
    >>> tree
    <xml.etree.ElementTree.ElementTree object at 0x000001B5F29BCD68>
    >>> tree.write('test2.xml')

    新生成了文件test2.xml

    <data>
        <person name="LiPanHui">
            <age updated="yes">29</age>
            <sex>man</sex>
            <like name="WuTao" />
        </person>
        <person name="XuQianHua">
            <age updated="yes">31</age>
            <sex>man</sex>
            <like name="ChenWeiMeng" />
        </person>
    </data>
    # 删除
    >>> tree = ET.parse("test.xml") >>> root = tree.getroot() >>> for person in root.findall('person'): ... age = int(person.find('age').text) ... if age < 29: ... root.remove(person) ... >>> tree.write("test.xml")

    文件test.xml被修改成:

    <data>
        <person name="XuQianHua">
            <age>30</age>
            <sex>man</sex>
            <like name="ChenWeiMeng" />
        </person>
    </data>

    新增xml文件

    >>> new_xml = ET.Element("hobbies")
    >>> name = ET.SubElement(new_xml, "singing", attrib={'very_like': 'yes'})
    >>> is_usually = ET.SubElement(name, "is_usually")
    >>> is_usually.text = 'yes'
    >>> name2 = ET.SubElement(new_xml, "play_game", attrib={'very_like': 'no'})
    >>> is_usually = ET.SubElement(name2, "is_usually")
    >>> is_usually.text = 'no'
    >>> et = ET.ElementTree(new_xml)
    >>> et.write("test.xml", encoding="utf-8", xml_declaration=True)
    >>> ET.dump(new_xml)# 打印生成的内容
    <hobbies><singing very_like="yes"><is_usually>yes</is_usually></singing><play_game very_like="no"><is_usually>no</is_usually></play_game></hobbies>

    生成的内容:

    <?xml version='1.0' encoding='utf-8'?>
    <hobbies>
        <singing very_like="yes">
            <is_usually>yes</is_usually>
        </singing>
        <play_game very_like="no">
            <is_usually>no</is_usually>
        </play_game>
    </hobbies>
  • 相关阅读:
    如何仅仅修改每一页的页眉
    resize
    Linux搭建深度学习环境
    Image.open、cv2.imread
    any、all
    cookie
    any、all
    库文件
    出来混总要还的,要提醒自己提高核心竞争力
    “行百里者半九十”(现在才逐渐真正理解这些道理)
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/9180608.html
Copyright © 2011-2022 走看看