xml即可擴展標記語言,它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 本文主要學習的ElementTree是python的XML處理模塊,它提供了一個輕量級的對象模型。在使用ElementTree模塊時,需要import xml.etree.ElementTre ...
xml即可擴展標記語言,它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
本文主要學習的ElementTree是python的XML處理模塊,它提供了一個輕量級的對象模型。在使用ElementTree模塊時,需要import xml.etree.ElementTree的操作。ElementTree表示整個XML節點樹,而Element表示節點數中的一個單獨的節點。
XML示例一:使用XML讀取本地的first.xml文件,並解析數據
以下是first.xml文件的內容
1 <data>
2 <country name="Liechtenstein">
3 <rank updated="yes">2</rank>
4 <year>2023</year>
5 <gdppc>14110</gdppc>
6 <neighbor direction="E" name="Austria"/>
7 <neighbor direction="W" name="switzeriand"/>
8 </country>
9 <country name="Singapore">
10 <rank updated="yes">5</rank>
11 <year>2026</year>
12 <gdppc>59900</gdppc>
13 <neighbor direction="N" name="Malaysia"/>
14 </country>
15 <country name="Faname">
16 <rank updated="yes">69</rank>
17 <year>2019</year>
18 <gdppc>13360</gdppc>
19 <neighbor direction="W" name="Costa Rica"/>
20 <neighbor direction="E" name="Colombia"/>
21 </country>
22 </data>
View Code
python代碼實現:
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 """
4 使用XML讀取本地的first.xml文件,並解析數據
5 """
6 from xml.etree import ElementTree as ET
7
8 root = ET.XML(open("first.xml", "r", encoding='utf-8').read()) #讀取本地的first.xml文件,解析字元串
9
10 #通過迴圈讀取子節點的內容
11 for node in root:
12 print(node.tag, node.attrib, node.find("year").text)
View Code
python實現讀取first.xml文件並解析的結果:
XML示例二:通過.parse()方式打開文件,可以實現修改文件內容
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 #打開並解析文件內容
5 from xml.etree import ElementTree as ET
6
7 tree = ET.parse("first.xml")
8 root = tree.getroot() #通過.getroot()獲取根節點
9 for node in root.iter('year'): #通過.iter()迭代找到指定的子節點
10 new_year = int(node.text) + 1
11 node.text = str(new_year)
12 node.set('name', 'YY') #通過.set()給year節點添加一個Name屬性
13 #del node.attrib['name'] 通過.attrib[]可刪除指定的屬性
14 head = root.find('gdppc') # 獲取節點
15 root.remove(head) # 刪除節點
16
17 #通過.write()將修改的內容從記憶體中寫入文件
18 tree.write("first.xml")
View Code
示例三:創建xml文檔
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 from xml.etree import ElementTree as ET
5
6 #創建根節點
7 new_xml = ET.Element("namelist")
8
9 #在根節點下創建子節點1
10 name1 = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"})
11 #在name1子節點下再創建孫節點
12 age1 = ET.SubElement(name1, "age", attrib={"checked": "no"})
13 sex1 = ET.SubElement(name1, "sex")
14 sex1.text = '1'
15
16 #在根節點下創建子節點2
17 name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"})
18 age2 = ET.SubElement(name2, "age")
19 age2.text = '20'
20
21 #生成文檔對象
22 et = ET.ElementTree(new_xml)
23 et.write("new_xml.xml", encoding='utf-8', xml_declaration=True)
View Code
創建xml文檔實現的結果: