python_88_xml模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单
例如创建xmltest.xml文件内容如上 注:/代表自结束符号
<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
        <info>
            <population>13</population>
            <size>960</size>
        </info>
    </country>

    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <neighbor name="Malaysia" direction="N"/>
    </country>

    <country name="Panama">
        <rank updated="yes">69</rank>
        <year>2011</year>
        <gdppc>13600</gdppc>
        <neighbor name="Costa Rica" direction="W"/>
        <neighbor name="Colombia" direction="E"/>
    </country>

</data>
View Code
xml协议在各个语言里的都是支持的,在python中可以用以下模块操作xml  

import xml.etree.ElementTree as ET
tree=ET.parse('xmltest.xml')
root=tree.getroot()
print(root)
print(root.tag)
# 遍历xml文档
for child in root:
    print(child.tag,child.attrib)
    for i in child:
        print(i.tag,i.text,i.attrib)

 # 只遍历year 节点
for node in root.iter('year'):
    print(node.tag,node.text,node.attrib)
修改和删除xml文档内容
import xml.etree.ElementTree as ET
tree=ET.parse('xmltest.xml')
root=tree.getroot()
# 修改
for node in root.iter('year'):
    new_year=int(node.text)+1
    node.text=str(new_year)
    node.set('updated','oldboy')#添加属性
tree.write('xmltest.xml')
#删除
for country in root.findall('country'):
    rank=int(country.find('rank').text)
    if rank>50:
        root.remove(country)
tree.write('output.xml')

 自己创建xml文档

import xml.etree.ElementTree as ET

new_xml=ET.Element('personinfolist')#根节点

personinfo=ET.SubElement(new_xml,'personinfo',attrib={'enrolled':'yes'})#personinfolist的子节点
name=ET.SubElement(personinfo,'name')
name.text='QI dad'
age=ET.SubElement(personinfo,'age',attrib={'checked':'no'})#personinfo的子节点
sex=ET.SubElement(personinfo,'sex')#personinfo的子节点
age.text='67'

personinfo2 = ET.SubElement(new_xml,"personinfo",attrib={"enrolled":"no"})
name=ET.SubElement(personinfo2,'name')
name.text='old boy'
age = ET.SubElement(personinfo2,"age")
age.text = '19'

et=ET.ElementTree(new_xml)
et.write('test.xml',encoding='utf-8',xml_declaration=True)#xml_declaration=True声明xml version="1.0"

ET.dump(new_xml)#生成打印格式
  



原文地址:https://www.cnblogs.com/tianqizhi/p/8451313.html