Python基礎知識值XML
阿新 • • 發佈:2017-09-17
move 解析 odi xml文件 tro 自加 節點 保存文件 data
一、XML內容
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2023</year>
<gdppc>141100</gdppc>
<neighbor direction="E" name="Austria" />
<neighbor direction="W" name="Switzerland" />
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2026</year>
<gdppc>59900</gdppc>
<neighbor direction="N" name="Malaysia" />
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2026</year>
<gdppc>13600</gdppc>
<neighbor direction="W" name="Costa Rica" />
<neighbor direction="E" name="Colombia" />
</country>
</data>
1.解析 XML
from xml.etree import ElementTree as ET
#打開XML,讀取XML的內容
str_xml = open("fisrt1.xml",‘r‘).read()
#將字符串解析成XML對象
root = ET.XML(str_xml)
2.直接解析XML文檔
#直接解析XML文件
str_xml = ET.parse("fisrt1.xml")
#獲取XML文件的根節點
root = str_xml.getroot()
2.操作XML文件
a.遍歷XML文檔中的所有內容
from xml.etree import ElementTree as ET
#直接解析XML文件
str_xml = ET.parse("fisrt1.xml")
#獲取XML文件的根節點
root = str_xml.getroot()
#頂層標簽
print(root.tag)
#遍歷XML文件的第二層標簽
for child in root:
print(child.tag, child.attrib)
#遍歷XML文件的第三層標簽
for sub_child in child:
print(sub_child.tag, sub_child.text)
b.遍歷XML文件中指點的節點
from xml.etree import ElementTree as ET
#打開XML,讀取XML的內容
#直接解析XML文件
str_xml = ET.parse("fisrt1.xml")
#獲取XML文件的根節點
root = str_xml.getroot()
#頂層標簽
print(root.tag)
for node in root.iter("year"):
print(node.tag, node.text)
for node in root.iter("gdppc"):
print(node.tag, node.text)
C.修改節點的內容
由於修改節點內容時,均是在內存中進行,不會對文件的內容造成影響。如果要修改文件的內容成功,則需要將內存修改的結果保存到文件中
from xml.etree import ElementTree as ET
#直接解析XML文件
str_xml = ET.parse("fisrt1.xml")
#獲取XML文件的根節點
root = str_xml.getroot()
#頂層標簽
print(root.tag)
#修改節點的內容
for node in root.iter("year"):
#將節點的內容自加1
new_year = int(node.text) + 1
node.text = str(new_year)
#設置節點
node.set(‘name‘, ‘hjw‘)
node.set(‘age‘,‘18‘)
# 保存修改的文件
tree = ET.ElementTree(root)
tree.write(‘aa.xml‘, encoding = ‘utf-8‘)
d.刪除節點
from xml.etree import ElementTree as ET
#直接解析XML文件
str_xml = ET.parse("fisrt1.xml")
#獲取XML文件的根節點
root = str_xml.getroot()
#頂層標簽
print(root.tag)
#遍歷data下的country下節點
for country in root.findall(‘country‘):
#獲取每個rank節點的內容
rank = int(country.find(‘rank‘).text)
if rank > 50:
#刪除指定的country節點
root.remove(country)
#保存修改後的內容
tree = ET.ElementTree(root)
tree.write(‘bb.xml‘, encoding=‘utf-8‘)
3.創建XML
from xml.etree import ElementTree as ET
#創建根節點
root = ET.Element(‘famliy‘)
#創建節點大兒子
son1 = ET.Element(‘son‘, {‘name‘ : ‘兒1‘})
#創建節點小兒子
son2 = ET.Element(‘son‘, {‘name‘ : ‘兒2‘})
#在大兒子中創建孫子節點
grandson1 = ET.Element(‘grandson‘, {‘name‘ : ‘兒11‘})
grandson2 = ET.Element("grandson", {‘name‘ : ‘兒12‘})
#把孫子添加到兒1中
son1.append(grandson1)
son1.append(grandson2)
#把兒子添加中根節點中
root.append(son1)
root.append(son2)
#b保存文件
tree = ET.ElementTree(root)
tree.write(‘new_son1.xml‘, encoding = ‘utf-8‘)
Python基礎知識值XML