python学习-52 XML模块

 XML模块

 

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单。

 

 

例如:创建一个xml文件

<data>
    <country name="china">
        <rank updated="yes">1</rank>
        <year>2019</year>
        <neighbor name="American"/>
    </country>
    <country name="Canada">
        <rank updated="yes">2</rank>
        <year>2019</year>
        <neighbor name="American"/>
    </country>
</data>

 

 

 

查询内容

import xml.etree.ElementTree as ET

tree = ET.parse("xml")
root = tree.getroot()
print(root.tag)
print('__________________')

#

for a in root:                # 遍历根
    print(a.tag)
    print(a.attrib)

    for b in a :            # 遍历根的下一级
        print(b.text)

for node in root.iter('year'):     #遍历节点,取year的内容
    print(node.tag,node.text)

运行结果:

data
__________________
country
{'name': 'china'}
2
2019
None
country
{'name': 'Canada'}
2
2019
None
year 2019
year 2019

Process finished with exit code 0

 

 

修改和删除

import xml.etree.ElementTree as ET

tree = ET.parse("xml")
root = tree.getroot()


# 修改

for node in root.iter("year"):
    new_year = int(node.text) + 1       #  年份加1
    node.text = str(new_year)
    node.set("updated","yes")         # 多加一个属性
tree.write("xml_text.xml")           # 放到一个新的文件里



# 删除
for country in root.findall("country"):
    rank = int(country.find("rank").text)
    if rank >1:                     # 删除排名大于1的国家的信息
        root.remove(country)
tree.write("xml_test2.xml")

 

 

创建一个xml文件

import xml.etree.ElementTree as ET

new_xml = ET.Element("namelist")


name =ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
age = ET.SubElement(name,"age",attrib={"checked":"no"})
sex = ET.SubElement(name,"sex")
sex.text = "32"

et = ET.ElementTree(new_xml)
et.write("xml2_test.xml",encoding="utf-8",xml_declaration=True)

 

posted @ 2019-08-08 14:32  学python的菜鸟  阅读(182)  评论(0编辑  收藏  举报