lesson 037 —— XML 模块

lesson 037 —— XML 模块

关于 xml 模块的简单介绍。一种数据格式。

方法

  1. import xml.etree.ElementTree as ET: 导入模块

  2. tree = ET.parse('xmlfile.xml'): 读入文件

    <?xml version="1.0" encoding="utf-8"?>
    <data>
      <country name="shanghai">
        <rank updated="yes">5</rank>
        <year>2011</year>
        <gdppc>56000</gdppc>
        <neighbor name="shanghai1" direction="E" />
      </country>
      <country name="beijing">
        <rank updated="yes">3</rank>
        <year>2012</year>
        <gdppc>66666</gdppc>
        <neighbor name="beijing1" direction="W" />
        <neighbor name="beijing2" direction="N" />
      </country>
      <country name="hangzhou">
        <rank updated="yes">1</rank>
        <year>2018</year>
        <gdppc>888888</gdppc>
      </country>
    </data>
  3. root = tree.getroot(): 获取根结点(即标签),根结点有标签名和属性两部分,即 root.tagroot.attrib,有些情况下可能只有标签名而没有属性。

  4. root 结点可以使用 for 循环进行遍历,同样得到的是结点,有标签名与属性两部分。

    tree = ET.parse('xmlfile.xml')
    root = tree.getroot()
    
    for child in root:
        print(child.tag, child.attrib)
        print('text: ', child.text)
        for i in child:
            print(i.tag, i.attrib)
            print('text: ', i.text)
  5. root.text 表示的是标签包围的内容。

  6. 只遍历 year 结点

    for node in root.iter('year'):
            print(node.tag, node.text)
  7. 修改 year 结点

    new_year = int(node.text) + 1
    node.text = str(new_year)
    node.set("updated", "yes")
  8. tree.write('xmlfile.xml'): 写入文件

  9. 删除结点

    for country in root.findall('country'):
        rank = int(country.find('rank').text)
        if rank > 30:
            root.remove(country)
  10. 自己生成 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 = '33'
    name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
    age = ET.SubElement(name2,"age")
    age.text = '19'
    
    et = ET.ElementTree(new_xml) #生成文档对象
    et.write("test.xml", encoding="utf-8",xml_declaration=True)
    
    ET.dump(new_xml) #打印生成的格式

猜你喜欢

转载自www.cnblogs.com/arelive/p/python-37.html