日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

分析如何在Python中解析和修改XML

瀏覽:31日期:2022-06-16 09:40:10
目錄一、什么是XML?二、Python XML解析模塊2.1、xml.etree.ElementTree模塊2.2、xml.dom.minidom模塊一、什么是XML?

XML代表可擴展標記語言。它在外觀上類似于HTML,但XML用于數據表示,而HTML用于定義正在使用的數據。XML專門設計用于在客戶端和服務器之間來回發送和接收數據。看看下面的例子:

例子:

<? xml version ='1.0' encoding ='UTF-8' ?> <metadata> <food> <item name ='breakfast' > Idly </item> <price> $2.5 </price> <description> 兩個 idly’s with chutney < /description> <calories> 553 </calories> </food> <food> <item name ='breakfast' > Paper Dosa </item> <price> $2.7 </price> <<calories> 700 </calories> </food> <food> <item name ='breakfast' > Upma </item> <price> $3.65 </price> <description> Rava upma with bajji </description> <calories> 600 </calories> </food> <food> <item name ='breakfast' > Bisi Bele Bath </item> <price> $4.50 </price> <description> Bisi Bele Bath with sev </description> <calories> 400 </calories></food> <food> <item name ='breakfast' > Kesari Bath </item> <price> $1.95 </price> <description> 藏紅花甜拉瓦 </description> <calories> 950 </calories> </食物> </元數據>

上面的示例顯示了我命名為“Sample.xml”的文件的內容,我將在此Python XML解析器教程中為所有即將推出的示例使用相同的內容。

二、Python XML解析模塊

Python允許使用兩個模塊解析這些XML文檔,即xml.etree.ElementTree模塊和Minidom(最小DOM實現)。解析意味著從文件中讀取信息并通過識別該特定XML文件的部分將其拆分為多個部分。讓我們進一步了解如何使用這些模塊來解析XML數據。

2.1、xml.etree.ElementTree模塊

該模塊幫助我們在樹結構中格式化XML數據,這是分層數據的最自然表示。元素類型允許在內存中存儲分層數據結構,并具有以下屬性:

分析如何在Python中解析和修改XML

ElementTree是一個包裝元素結構并允許與XML相互轉換的類。現在讓我們嘗試使用python模塊解析上述XML文件。

有兩種使用“ElementTree”模塊解析文件的方法。第一個是使用parse()函數,第二個是fromstring()函數。parse()函數解析作為文件提供的XML文檔,而fromstring解析作為字符串提供的XML,即在三引號內。

使用parse()函數:

如前所述,該函數采用文件格式的XML來解析它。看下面的例子:

例子:

import xml.etree.ElementTree as ETmytree = ET.parse(’sample.xml’)myroot = mytree.getroot()

如您所見,您需要做的第一件事是導入xml.etree.ElementTree模塊。然后,parse()方法解析“Sample.xml”文件。getroot()方法返回“Sample.xml”的根元素。

執行上述代碼時,您不會看到返回的輸出,但不會出現表明代碼已成功執行的錯誤。要檢查根元素,您可以簡單地使用print語句,如下所示:

例子:

import xml.etree.ElementTree as ETmytree = ET.parse(’sample.xml’)myroot = mytree.getroot()print(myroot)

輸出:

<元素’元數據’在0x033589F0>

上面的輸出表明我們的XML文檔中的根元素是“元數據”。

使用fromstring()函數:

您還可以使用fromstring()函數來解析您的字符串數據。如果要執行此操作,請將XML作為字符串傳遞給三引號,如下所示:

import xml.etree.ElementTree as ETdata=’’’<?xml version='1.0' encoding='UTF-8'?><metadata><food> <item name='breakfast'>Idly</item> <price>$2.5</price> <description> Two idly’s with chutney </description> <calories>553</calories></food></metadata>’’’myroot = ET.fromstring(data)#print(myroot)print(myroot.tag)

上面的代碼將返回與前一個相同的輸出。請注意,用作字符串的XML文檔只是“Sample.xml”的一部分,我使用它來提高可見性。您也可以使用完整的XML文檔。

您還可以使用“標簽”對象檢索根標簽,如下所示:

例子:

print(myroot.tag)

輸出:

元數據

您還可以通過指定要在輸出中看到的字符串部分來對標簽字符串輸出進行切片。

例子:

print(myroot.tag[0:4])

輸出:

如前所述,標簽也可以具有字典屬性。要檢查根標記是否具有任何屬性,您可以使用“attrib”對象,如下所示:

例子:

print(myroot.attrib)

輸出:

{}

如您所見,輸出是一個空字典,因為我們的根標簽沒有屬性。

尋找感興趣的元素:

根也由子標簽組成。要檢索根標記的子項,您可以使用以下命令:

例子:

print(myroot[0].tag)

輸出:

食物

現在,如果要檢索根的所有第一個子標簽,可以使用for循環迭代它,如下所示:

例子:

for x in myroot[0]: print(x.tag, x.attrib)

輸出:

item {’name’: ’breakfast’}價格{}描述{}卡路里{}

返回的所有項目都是食物的子屬性和標簽。

要使用ElementTree將文本從XML中分離出來,您可以使用text屬性。例如,如果我想檢索有關第一個食品的所有信息,我應該使用以下代碼:

例子:

for x in myroot[0]:print(x.text)

輸出:

懶懶地$ 2.5兩悠閑地與酸辣醬的553

可以看到,第一項的文本信息已經作為輸出返回了。現在,如果您想顯示具有特定價格的所有商品,您可以使用get()方法。此方法訪問元素的屬性。

例子:

for x in myroot.findall(’food’): item =x.find(’item’).text price = x.find(’price’).text print(item, price)

輸出:

Idly$2.5Paper Dosa$2.7Upma$3.65Bisi Bele Bath$4.50Kesari Bath$1.95

上面的輸出顯示了所有必需的項目以及每個項目的價格。使用ElementTree,您還可以修改XML文件。

修改XML文件:

可以操作XML文件中的元素。為此,您可以使用set()函數。讓我們首先看看如何向XML添加一些東西。

添加到XML:

以下示例顯示了如何在項目描述中添加內容。

例子:

for description in myroot.iter(’description’): new_desc = str(description.text)+’wil be served’ description.text = str(new_desc) description.set(’updated’, ’yes’) mytree.write(’new.xml’)

write()函數幫助創建一個新的xml文件并將更新的輸出寫入相同的文件。但是,您也可以使用相同的功能修改原始文件。執行完上述代碼后,您將能夠看到已創建具有更新結果的新文件。

分析如何在Python中解析和修改XML

上圖顯示了對我們食品的修改描述。要添加新的子標簽,您可以使用SubElement()方法。例如,如果您想在第一項Idly中添加一個新的專業標簽,您可以執行以下操作:

例子:

ET.SubElement(myroot[0], ’speciality’)for x in myroot.iter(’speciality’): new_desc = ’South Indian Special’ x.text = str(new_desc) mytree.write(’output5.xml’)

輸出:

分析如何在Python中解析和修改XML

如您所見,在第一個食品標簽下添加了一個新標簽。通過在[]括號內指定下標,您可以在任何地方添加標簽。現在讓我們看一下如何使用此模塊刪除項目。

從XML中刪除:

要使用ElementTree刪除屬性或子元素,您可以使用pop()方法。此方法將刪除用戶不需要的所需屬性或元素。

例子:

myroot[0][0].attrib.pop(’name’, None) # create a new XML file with the resultsmytree.write(’output5.xml’)

輸出:

分析如何在Python中解析和修改XML

上圖顯示name屬性已從item標記中刪除。要刪除完整的標簽,您可以使用相同的pop()方法,如下所示:

例子:

myroot[0].remove(myroot[0][0])mytree.write(’output6.xml’)

輸出:

分析如何在Python中解析和修改XML

輸出顯示食品標簽的第一個子元素已被刪除。如果要刪除所有標簽,可以使用clear()函數,如下所示:

例子:

myroot[0].clear()mytree.write(’output7.xml’)

輸出:

執行上述代碼時,food標簽的第一個子標簽將被完全刪除,包括所有子標簽。到這里為止,我們一直在使用這個Python XML解析器教程中的xml.etree.ElementTree模塊。現在讓我們看看如何使用Minidom解析XML。

2.2、xml.dom.minidom模塊

這個模塊基本上是由精通DOM(文檔對象模塊)的人使用的。DOM應用程序通常首先將XML解析為DOM。在xml.dom.minidom中,這可以通過以下方式實現:

使用parse()函數:

第一種方法是通過提供要解析的XML文件作為參數來使用parse()函數。例如:

例子:

from xml.dom import minidomp1 = minidom.parse('sample.xml');

執行此操作后,您將能夠拆分XML文件并獲取所需的數據。您還可以使用此函數解析打開的文件。

例子:

dat=open(’sample.xml’)p2=minidom.parse(dat)

在這種情況下,存儲打開文件的變量作為參數提供給解析函數。

使用parseString()方法:

當您想要提供要作為字符串解析的XML時,將使用此方法。

例子:

p3 = minidom.parseString(’<myxml>Using<empty/> parseString</myxml>’)

您可以使用上述任何一種方法來解析XML。現在讓我們嘗試使用此模塊獲取數據。

尋找感興趣的元素:

在我的文件被解析后,如果我嘗試打印它,返回的輸出會顯示一條消息,表明存儲解析數據的變量是DOM對象。

例子:

dat=minidom.parse(’sample.xml’)print(dat)

輸出:

<xml.dom.minidom.Document對象在0x03B5A308>

使用GetElementByTagName訪問元素:

例子:

tagname= dat.getElementsByTagName(’item’)[0]print(tagname)

如果我嘗試使用GetElementByTagName方法獲取第一個元素,我將看到以下輸出:

輸出:

<DOM元素:0xc6bd00處的項目>

請注意,只返回了一個輸出,因為為了方便我使用了[0]下標,這將在進一步的示例中刪除。

要訪問屬性的值,我必須按如下方式使用value屬性:

例子:

dat = minidom.parse(’sample.xml’)tagname= dat.getElementsByTagName(’item’)print(tagname[0].attributes[’name’].value)

輸出:

早餐

要檢索這些標簽中存在的數據,您可以使用data屬性,如下所示:

例子:

print(tagname[1].firstChild.data)

輸出:

紙Dosa

您還可以使用value屬性拆分和檢索屬性的值。

例子:

print(items[1].attributes[’name’].value)

輸出:

早餐

要打印出我們菜單中可用的所有項目,您可以遍歷這些項目并返回所有項目。

例子:

for x in items: print(x.firstChild.data)

輸出:

袖手旁觀紙DOSAUPMA碧斯百麗沐浴Kesari浴

要計算菜單上的項目數,您可以使用len()函數,如下所示:

例子:

print(len(items))

輸出指定我們的菜單包含5個項目。

這使我們結束了本Python XML解析器教程。我希望你已經清楚地了解了一切。

以上就是分析如何在Python中解析和修改XML的詳細內容,更多關于Python解析和修改XML的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩免费高清| 免费观看久久av| 亚洲精品一区二区妖精| 免费观看亚洲| 91精品国产91久久久久久黑人| 国产麻豆久久| 午夜国产精品视频| 蜜臀久久99精品久久久久久9| 日韩精品欧美成人高清一区二区| 999久久久精品国产| 成人精品天堂一区二区三区| 日韩一区欧美| 欧美成人基地| 欧美午夜精彩| 午夜在线一区| 一区二区电影在线观看| 蜜臀久久久久久久| 天堂av一区| 国产精品亚洲欧美| 国产精品久久久久久久久久齐齐| 国产另类在线| 精品欧美日韩精品| 久久影院一区| 在线精品国产亚洲| 日韩激情一区二区| 久久中文精品| 亚洲深夜福利| 久久激五月天综合精品| 国产精品videossex久久发布 | 日本中文字幕一区二区| 国产欧美在线| 日韩精品看片| 免费观看在线综合色| 欧美午夜三级| 久久久久久自在自线| 91久久黄色| 日本一区福利在线| 国产精品大片免费观看| 欧美成人国产| 日韩免费精品| 国产精品日韩精品在线播放| 天堂va在线高清一区| 视频一区视频二区中文字幕| 久久女人天堂| 久久久久国产一区二区| 视频一区二区国产| 午夜影院一区| 日韩国产欧美三级| 亚洲性视频h| 九九99久久精品在免费线bt| 亚洲在线网站| 激情国产在线| 国产日韩精品视频一区二区三区| 亚洲高清毛片| 国产精品久久亚洲不卡| 亚洲欧美视频一区二区三区| 热三久草你在线| 国产精品一区二区99| 久久国产高清| 久久天堂精品| 欧美精品中文| 欧美专区在线| 国语精品一区| 丝袜诱惑制服诱惑色一区在线观看| 国产九一精品| 丝袜国产日韩另类美女| 91日韩在线| 国产精品亚洲产品| 日韩午夜av| 天堂√中文最新版在线| 国产精品调教| 日韩一区中文| 蜜臀久久久99精品久久久久久| 久久久夜精品| 91偷拍一区二区三区精品| 欧美日韩精品一区二区三区在线观看| 欧美亚洲国产激情| 国产欧美日韩亚洲一区二区三区| 欧美日韩一区二区三区视频播放| 精品网站aaa| 亚洲性视频在线| 亚洲国产不卡| xxxxx性欧美特大| 国产日韩亚洲欧美精品| 中文视频一区| 波多野结衣一区| 精品欧美久久| 亚洲少妇诱惑| 石原莉奈在线亚洲二区| 免费高清在线一区| 综合激情网站| 日韩精品一区二区三区中文字幕| 亚洲性视频h| 久久久久亚洲| 欧美日韩黑人| 日韩视频在线一区二区三区| 午夜精品一区二区三区国产| japanese国产精品| 99热免费精品| 蜜桃久久久久久| 日本va欧美va瓶| 国产精品一国产精品k频道56| 久久99影视| 伊人久久国产| 欧美日韩国产亚洲一区| 亚洲激情欧美| 亚洲区欧美区| 日本综合精品一区| 国产日产精品_国产精品毛片| 国产精品中文字幕亚洲欧美| 麻豆精品久久久| 日韩国产综合| 国产精品日韩久久久| 日韩在线一二三区| 欧美日韩一区二区三区四区在线观看| 欧美日韩一区自拍| 国产成人在线中文字幕| 日本免费一区二区三区四区| 亚洲精品在线观看91| 人人爽香蕉精品| 国产麻豆精品久久| 久久精品资源| 国产99久久| 日韩在线一区二区| 国产精品香蕉| 成人午夜国产| 亚洲有吗中文字幕| 国内精品亚洲| 美女精品在线| 国产精品黄色片| 日韩在线短视频| 亚洲影院天堂中文av色| 精品国内亚洲2022精品成人| 久久亚洲专区| 国产欧美日韩亚洲一区二区三区| 成人在线视频区| 国产午夜久久| 国产精品丝袜在线播放| 日本欧美不卡| 青草综合视频| 波多视频一区| 日韩精品导航| 久久一区二区三区电影| 日韩国产欧美视频| 日本精品在线中文字幕| 日韩av中文字幕一区二区| 国产福利片在线观看| 亚洲影院天堂中文av色| 91综合网人人| 日韩一区二区三区四区五区| 日韩理论片av| 欧美日韩va| 欧美日韩精品免费观看视频完整| 国产亚洲电影| 国产农村妇女精品一区二区| 久久天堂影院| 亚洲精品伊人| 99久久夜色精品国产亚洲狼 | 不卡在线一区二区| 美女高潮久久久| 亚洲精品激情| 91精品观看| 97精品国产| 国产情侣一区在线| 99香蕉国产精品偷在线观看| 国产精品99在线观看| 中文字幕日本一区二区| 日韩精品看片| 精品久久在线| 日本精品国产| 亚洲欧美久久久| 久久蜜桃精品| 国产日韩电影| 麻豆视频观看网址久久| 日韩国产在线一| 久久xxxx精品视频| 久久久久久久久久久9不雅视频| 久久中文字幕一区二区| 88久久精品| 在线观看一区| 国产农村妇女精品一二区| 激情国产在线| 国产精品永久| 欧美一区成人| 婷婷精品在线| 亚洲精品一二| 亚洲精选av| 日韩中文字幕一区二区三区| 婷婷丁香综合| 国内精品福利| 久久久久久久久99精品大| 都市激情国产精品| 精品美女在线视频| 狂野欧美性猛交xxxx| 国产精品日韩精品中文字幕| 日韩高清三区| 国产精品丝袜xxxxxxx| 精品一区亚洲| 黄色成人精品网站| 亚洲深爱激情|