Python基礎知識值XML

來源:互聯網
上載者:User

標籤:指點   儲存到檔案   lan   name   update   remove   count   字串解析   cti   

一、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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.