python通過(guò)ElementTree操作XML獲取結(jié)點(diǎn)讀取屬性美化XML
1.引入庫(kù)
需要用到3個(gè)類(lèi),ElementTree,Element以及建立子類(lèi)的包裝類(lèi)SubElement
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement as SE
2.讀入并解析
tree = ElementTree(file=xmlfile)
root = tree.getroot()
讀入后,tree是ElementTree的類(lèi)型,獲取xml根結(jié)點(diǎn)使用getroot()方法;
XML示例文件:
<item sid='1712' name = '大CC' >
<a id=1></a>
<a id=2></a>
</item>
3.獲取兒子結(jié)點(diǎn)
查找Element的所有子結(jié)點(diǎn):
AArry = item.findall('a')
也可使用getchildren():
childs = item.getchildren()
for subItem in childs:
print subItem.get('id')
4.插入兒子結(jié)點(diǎn)
方法一:
item = Element("item", {'sid' : '1713', 'name' : 'ityouhui'})
root.append(item)
方法二:
SE(root,'item',{'sid':'1713','name':'ityouhui'})
法一的好處是插入之后可以對(duì)item繼續(xù)操作。法二是寫(xiě)法上簡(jiǎn)單,其中SE就是SubElement,在引入處做了聲明;
5.操作屬性
獲取Element的某個(gè)屬性值(eg:獲取item的 name)
print root.find('item/name').text
print item.get('name')
獲取Element所有屬性
print item.items() # [('sid', '1712'), ('name', '大CC')]
print item.attrib # {'sid': '1712', 'name': '大CC'}
6.美化XML
在寫(xiě)入之前,傳入root調(diào)用此函數(shù),寫(xiě)入的XML文件格式整齊美觀(guān):
indent(root)
book.write(xmlfile,'utf-8')
## Get pretty look
def indent( elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
for e in elem:
indent(e, level+1)
if not e.tail or not e.tail.strip():
e.tail = i
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
return elem
相關(guān)文章
Windows和夜神模擬器上抓包程序mitmproxy的安裝使用詳解
mitmproxy是一個(gè)支持HTTP和HTTPS的抓包程序,有類(lèi)似Fiddler、Charles的功能,只不過(guò)它是一個(gè)控制臺(tái)的形式操作,這篇文章主要介紹了Windows和夜神模擬器上抓包程序mitmproxy的安裝使用詳解,需要的朋友可以參考下2022-10-10
Python 實(shí)現(xiàn)一行輸入多個(gè)值的方法
下面小編就為大家分享一篇Python 實(shí)現(xiàn)一行輸入多個(gè)值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python實(shí)現(xiàn)獲取sonarqube數(shù)據(jù)
sonarqube是一款代碼分析的工具,可以對(duì)通過(guò)soanrScanner掃描后的數(shù)據(jù)傳遞給sonarqube進(jìn)行分析,本文為大家整理了Python獲取sonarqube數(shù)據(jù)的方法,需要的可以參考下2023-05-05
python getopt詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了 python getopt詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-12-12
對(duì)python 操作solr索引數(shù)據(jù)的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python 操作solr索引數(shù)據(jù)的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
numpy數(shù)組坐標(biāo)軸問(wèn)題解決
本文主要介紹了numpy數(shù)組坐標(biāo)軸問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

