加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml处理模块

发布时间:2020-12-16 23:33:07 所属栏目:百科 来源:网络整理
导读:假如有下面这样简单的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" / / per

假如有下面这样简单的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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读