Python 解析xml文件的示例
1、獲取xml樹
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、從根開始遍歷樹
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)文章
Selenium webdriver添加cookie實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Selenium webdriver添加cookie實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Celery批量異步調(diào)用任務(wù)一直等待結(jié)果問題
這篇文章主要介紹了Celery批量異步調(diào)用任務(wù)一直等待結(jié)果問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Python中用Descriptor實(shí)現(xiàn)類級(jí)屬性(Property)詳解
這篇文章主要介紹了Python中用Descriptor實(shí)現(xiàn)類級(jí)屬性(Property)詳解,本文先是講解了decorator是什么,然后給出了通過Descriptor來做一個(gè)類級(jí)的Property實(shí)例,需要的朋友可以參考下2014-09-09
Numpy中創(chuàng)建數(shù)組的9種方式小結(jié)
本文主要介紹了Numpy中創(chuàng)建數(shù)組的9種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
python爬蟲項(xiàng)目設(shè)置一個(gè)中斷重連的程序的實(shí)現(xiàn)
這篇文章主要介紹了python爬蟲項(xiàng)目設(shè)置一個(gè)中斷重連的程序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python 列表,數(shù)組和矩陣sum的用法及區(qū)別介紹
今天小編就為大家分享一篇python 列表,數(shù)組和矩陣sum的用法及區(qū)別介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python json 遞歸打印所有json子節(jié)點(diǎn)信息的例子
今天小編就為大家分享一篇python json 遞歸打印所有json子節(jié)點(diǎn)信息的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python二進(jìn)制數(shù)據(jù)結(jié)構(gòu)Struct的具體使用
在C/C++語言中,struct被稱為結(jié)構(gòu)體。而在Python中,struct是一個(gè)專門的庫(kù),用于處理字節(jié)串與原生Python數(shù)據(jù)結(jié)構(gòu)類型之間的轉(zhuǎn)換。本文就詳細(xì)介紹struct的使用方式2021-06-06
Python實(shí)現(xiàn)讀取JSON并導(dǎo)出為表格數(shù)據(jù)格式
這篇文章主要為大家詳細(xì)介紹了如何基于Python語言,讀取JSON格式的數(shù)據(jù),并將提取的指定內(nèi)容保存到表格文件中,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03

