Python 解析xml文件的示例
1、獲取xml樹(shù)
import xml.etree.ElementTree as ET
def getTree(xmlName):
xmlName = xmlName.strip()
try:
tree = ET.parse(xmlName)
except:
tree = None
print 'Analysis xml file fail,file name: {}'.format(xmlName)
return tree
2、獲取根節(jié)點(diǎn)
def getRoot(tree):
if tree is not None:
root = tree.getroot()
else:
root = None
print 'Get root fail'
return root
3、查看根節(jié)點(diǎn)
def seeRoot(root):
'''<country name="tan">我是小明</country>'''
if root is not None:
print 'root tag:', root.tag # 標(biāo)簽(country)
print 'root attrib:', root.attrib # 屬性(name="tan")
print 'root text:', root.text # 文本(我是小明)
print 'root tail:', root.tail # 尾字符串(未涉及)
4、從根開(kāi)始遍歷樹(shù)
def traverseRoot(root):
if root is not None:
for label1 in root:
print 'label1 tag:', label1.tag
print 'label1 attrib:', label1.attrib
print 'label1 text:', label1.text
print 'label1 tail:', label1.tail
print '=================='
for label2 in label1:
print 'label2 tag:', label2.tag
print 'label2 attrib:', label2.attrib
print 'label2 text:', label2.text
print 'label2 tail:', label2.tail
print '=================='
for label3 in label2:
print 'label3 tag:', label3.tag
print 'label3 attrib:', label3.attrib
print 'label3 text:', label3.text
print 'label3 tail:', label3.tail
print '=================='
5、找到2012年的gdppc和neighbor下的b標(biāo)簽(找到同層有條件的同層另一個(gè)tag的文本)
def findYouNedd(root):
'''查找year為2012下的b標(biāo)簽的文本'''
if root is not None:
for label1 in root:
for label2 in label1:
if label1.tag == 'country' and label2.text == '2012': # 找到本層標(biāo)簽為country且下一層有2012文本
print 'Find tag為country and next year=2012'
for child in label1:
if child.tag == 'gdppc':
print child.text
for youNeed in child:
if youNeed.tag == 'b':
print 'You need:', youNeed.text
6、查找父節(jié)點(diǎn)下的子節(jié)點(diǎn)
def findChildNode(fatherNode, childNode):
childNode = childNode.strip()
if fatherNode is not None:
childs = fatherNode.findall(childNode)
print childs
print len(childs)
7、另一種辦法實(shí)現(xiàn)第4點(diǎn)
def findYouNedd2(root):
countryNodes = root.findall('country')
if root is not None:
for countryNode in countryNodes:
if countryNode.find('year').text == '2012':
print countryNode.find('gdppc').text
8、移除節(jié)點(diǎn)
def delNode(tree, nodeName):
nodeName = nodeName.strip()
if tree is not None:
root = tree.getroot()
findNode = root.find(nodeName)
if findNode is not None and findNode.tag == nodeName:
root.remove(findNode)
tree.write('removeNode.xml') # 移除節(jié)點(diǎn)后新的xml
9、xml樣例(xmlDemo.xml)
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N">123
<a name="a"> aaa </a>
</neighbor>
</country>
<country name="Singapore">
<rank>68</rank>
<year>2012</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E">456
<b name="b"> bbb </b>
</neighbor>
</country>
<city>789</city>
</data>
以上就是Python 解析xml文件的示例的詳細(xì)內(nèi)容,更多關(guān)于Python 解析xml的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用實(shí)現(xiàn)pandas讀取csv文件指定的前幾行
下面小編就為大家分享一篇使用實(shí)現(xiàn)pandas讀取csv文件指定的前幾行,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python通過(guò)psd-tools解析PSD文件的實(shí)現(xiàn)
本文主要介紹了Python通過(guò)psd-tools解析PSD文件的實(shí)現(xiàn),主要包括如何獲取PSD文件的基本信息、遍歷圖層、提取圖層詳細(xì)信息、保存和創(chuàng)建PSD文件,感興趣的可以了解一下2023-12-12
Dockerfile構(gòu)建一個(gè)Python Flask 鏡像
這篇文章主要介紹了Dockerfile構(gòu)建一個(gè)Python Flask 鏡像,對(duì)正在學(xué)習(xí)的你有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-01-01
pytorch 把MNIST數(shù)據(jù)集轉(zhuǎn)換成圖片和txt的方法
這篇文章主要介紹了pytorch 把MNIST數(shù)據(jù)集轉(zhuǎn)換成圖片和txt的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python服務(wù)器創(chuàng)建虛擬環(huán)境跑代碼
本文主要介紹了Python服務(wù)器創(chuàng)建虛擬環(huán)境跑代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
OpenCV-Python 攝像頭實(shí)時(shí)檢測(cè)人臉代碼實(shí)例
這篇文章主要介紹了OpenCV-Python 攝像頭實(shí)時(shí)檢測(cè)人臉,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

