欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 分析如何在Python中解析和修改XML

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

熱門標簽:無錫客服外呼系統一般多少錢 北京電信外呼系統靠譜嗎 梅州外呼業務系統 老人電話機器人 地圖標注視頻廣告 高德地圖標注是免費的嗎 百度地圖標注位置怎么修改 大連crm外呼系統 洪澤縣地圖標注

一、什么是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數據,這是分層數據的最自然表示。元素類型允許在內存中存儲分層數據結構,并具有以下屬性:

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

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

使用parse()函數:

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

例子:

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

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

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

例子:

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

輸出:

元素'元數據'在0x033589F0>

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

使用fromstring()函數:

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

import xml.etree.ElementTree as ET
data='''?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.5
Paper Dosa$2.7
Upma$3.65
Bisi Bele Bath$4.50
Kesari 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文件并將更新的輸出寫入相同的文件。但是,您也可以使用相同的功能修改原始文件。執行完上述代碼后,您將能夠看到已創建具有更新結果的新文件。

上圖顯示了對我們食品的修改描述。要添加新的子標簽,您可以使用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')

輸出:

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

從XML中刪除:

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

例子:

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

輸出:

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

例子:

myroot[0].remove(myroot[0][0])
mytree.write('output6.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 minidom
p1 = minidom.parse("sample.xml");

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

例子:

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

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

使用parseString()方法:

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

例子:

p3 = minidom.parseString('myxml>Usingempty/> 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)

輸出:

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

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

例子:

print(len(items))

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

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

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

您可能感興趣的文章:
  • Python lxml庫的簡單介紹及基本使用講解
  • Python xmltodict模塊安裝及代碼實例
  • python讀取xml文件方法解析
  • Python將字典轉換為XML的方法
  • python讀取配置文件方式(ini、yaml、xml)
  • python 截取XML中bndbox的坐標中的圖像,另存為jpg的實例
  • python代碼xml轉txt實例
  • python:批量統計xml中各類目標的數量案例
  • 利用 Python ElementTree 生成 xml的實例
  • Python3 xml.etree.ElementTree支持的XPath語法詳解

標簽:安慶 怒江 清遠 長春 吉林 洛陽 泉州 岳陽

巨人網絡通訊聲明:本文標題《分析如何在Python中解析和修改XML》,本文關鍵詞  分析,如,何在,Python,中,解析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《分析如何在Python中解析和修改XML》相關的同類信息!
  • 本頁收集關于分析如何在Python中解析和修改XML的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    青青草视频成人| 蜜臀av午夜精品久久| 欧美日韩中文字幕一区二区| 日本一区二区成人| 看电视剧不卡顿的网站| 日本护士做爰视频| 制服丝袜在线91| 亚洲高清免费视频| 久久久久亚洲av无码专区首jn| 中文字幕av免费在线观看| 国产精品人妖ts系列视频| 国产精品亚洲一区二区三区在线 | 美女一区二区久久| 老鸭窝一区二区| 2019国产精品| 国精品**一区二区三区在线蜜桃| 受虐m奴xxx在线观看| 精品乱人伦一区二区三区| 久久精品72免费观看| 手机看片日韩av| 日本一区二区三级电影在线观看 | 人妻体体内射精一区二区| 色播五月激情综合网| 一区二区视频在线| 色悠悠在线视频| 日韩一区二区三区视频在线| 日韩1区2区3区| 成人免费无码大片a毛片| 日韩欧美在线观看一区二区三区| 日本美女视频一区二区| 国产精品20p| 欧美激情一区不卡| 99综合影院在线| 欧美精品乱人伦久久久久久| 亚洲bt欧美bt精品| 国产全是老熟女太爽了| 国产三级精品在线| jizzjizzjizz欧美| 欧美精选午夜久久久乱码6080| 视频一区二区三区入口| 69视频在线观看免费| 国产精品区一区二区三| 日本亚洲一区二区三区| 欧美一区二区人人喊爽| 黄一区二区三区| 极品久久久久久| 亚洲国产视频网站| 国产真人做爰视频免费| 自拍偷自拍亚洲精品播放| 国产精品一区二区在线免费观看| 欧美精品一区二区三区在线播放| 国产精品主播直播| 欧美亚洲另类激情小说| 天天影视网天天综合色在线播放| 午夜影院黄色片| 亚洲黄色录像片| 在线不卡av电影| 亚洲精品写真福利| 免费看黄色的视频| 亚洲免费高清视频在线| 国产精品一区二区入口九绯色| 久久久久久黄色| wwwxxxx在线观看| 久久综合久久综合九色| 99久久久无码国产精品| 欧美一区二区三级| 成人黄色在线网站| 日韩精品一区二区三区在线| 成人sese在线| 精品三级在线观看| 91麻豆精品视频| 日韩一区二区麻豆国产| 成人一级片网址| 7777精品伊人久久久大香线蕉的| 另类欧美日韩国产在线| 在线欧美小视频| 精品一区二区久久久| 欧美三级一区二区| 国产精品一线二线三线| 91精品国产综合久久小美女| 国产精品1区2区| 日韩一区二区在线免费观看| 成人午夜视频免费看| 日韩一区二区电影在线| 99久久精品情趣| 国产亚洲欧美日韩俺去了| 色综合久久久无码中文字幕波多| 久久日韩粉嫩一区二区三区| aaa黄色大片| 自拍偷拍国产精品| 日本精品久久久久中文| 午夜精品福利在线| 日本电影亚洲天堂一区| 久久se这里有精品| 7777精品伊人久久久大香线蕉超级流畅| 国产成人av电影在线播放| 日本美女一区二区三区视频| 欧美无人区码suv| 一区二区视频免费在线观看| 国产中文字幕久久| 免费观看成人鲁鲁鲁鲁鲁视频| 一本色道久久综合精品竹菊| 免费看欧美美女黄的网站| 91久久精品一区二区| 国产福利不卡视频| 久久综合九色综合97婷婷| 男男一级淫片免费播放| 亚洲天堂av一区| 免费黄色国产视频| 狠狠色狠狠色综合系列| 宅男噜噜噜66一区二区66| av在线免费观看不卡| 综合婷婷亚洲小说| 成人免费视频国产免费观看| 国产在线国偷精品产拍免费yy | 国产一区二区看久久| 欧美不卡123| 女同性恋一区二区三区| 亚洲自拍偷拍综合| 日本精品视频一区二区三区| 成人精品国产福利| 国产欧美日韩在线| 日韩精品电影一区二区三区| 精品亚洲porn| 久久久久久久性| 神马久久久久久久久久久| 久久99精品久久久久久国产越南 | 日本一卡二卡在线播放| 毛片av中文字幕一区二区| 日韩欧美国产1| 天堂www中文在线资源| 亚洲第一主播视频| 欧美日韩视频在线第一区| 国产黄色一区二区三区| 一区二区三区中文字幕在线观看| 色综合欧美在线| 成人高清视频在线| 亚洲激情一二三区| 欧美日韩国产免费| 波多野结衣加勒比| 免费在线看一区| 久久新电视剧免费观看| 亚洲a∨无码无在线观看| 国产精品夜夜嗨| 中文字幕中文在线不卡住| 色婷婷精品久久二区二区蜜臀av | 在线观看91av| 泷泽萝拉在线播放| 激情伊人五月天久久综合| 欧美国产综合一区二区| 天海翼在线视频| av一区二区三区在线| 亚洲一区视频在线| 欧美一级xxx| 国产视频123区| 懂色av中文一区二区三区| 亚洲女同ⅹxx女同tv| 欧美精品亚洲一区二区在线播放| 激情综合丁香五月| 国产自产v一区二区三区c| 国产精品久久久久一区二区三区| 色噜噜久久综合| 少妇熟女视频一区二区三区 | 国产免费嫩草影院| 国产.欧美.日韩| 亚洲黄色性网站| 日韩一区二区三区四区| 精品国产大片大片大片| 精品国产午夜福利在线观看| 五月综合激情网| 久久亚洲一区二区三区四区| 杨钰莹一级淫片aaaaaa播放| 国产精九九网站漫画| 麻豆国产精品官网| 一区在线播放视频| 在线91免费看| 天堂网av2018| 亚洲精品成人无码毛片| 久久99精品网久久| 亚洲男女毛片无遮挡| 日韩一级片网址| 538精品在线视频| 亚洲第九十七页| 成人福利视频在线| 日韩av电影免费观看高清完整版 | 中文字幕成人网| 欧美久久久一区| 欧美色视频一区二区三区在线观看| 国产91丝袜在线18| 丝袜亚洲另类欧美综合| 中文字幕高清不卡| 91精品蜜臀在线一区尤物| 亚洲aaa视频| 男女性杂交内射妇女bbwxz| 国产一区二区视频在线| 亚洲综合图片区| 国产清纯美女被跳蛋高潮一区二区久久w | 潘金莲一级黄色片| av网站有哪些| 91免费看视频|