一、說明
從最開始寫javascript開始,我就很煩感使用getElementById()等函數來獲取節點的方法,獲取了一個節點要訪問其子孫節點要么child半天要么就再來一個getElementById(),這是智障嗎?----所以我不喜歡beautiful soup(當然還因為他不支持xpath)。
python的json標准庫可以將json結果直接解析為python對象;python也提供了好幾個標准庫來解析xml,但我不是很明白為什么都是一些不能直接將xml解析為python對象的垃圾庫。
給一堆函數就叫功能強大嗎,這次用了下次又得重新學簡直腦殘。
類似json將xml解析為python對象,可以使用第三方庫untangle或xmltodict實現。
將以下內容保存為xml2obj.xml,后我我們就使用該文件。
<?xml version="1.0"?> <root> <title>xml to python obj</title> <body> <section id="1">section1 content</section> <section id="2">section2 content</section> </body> </root>
二、使用untangle將xml文件解析為python對象
pip install untangle
代碼如下:
import untangle # 將文件解析成對象 obj = untangle.parse('xml2obj.xml') # 獲取<title>標簽內容 obj.root.title.__dict__['cdata'] # 獲取第一個section標簽 obj.root.body.section[0] # 獲取第二個section標簽的id obj.root.body.section[1]['id']
運行如下:

三、使用xmltodict將xml文件解析為python對象
pip install xmltodict
代碼如下:
import xmltodict # 將xml文件解析成對象 with open('xml2obj.xml') as fd: dict = xmltodict.parse(fd.read()) # 獲取<title>標簽內容 dict['root']['title'] # 獲取第一個section標簽 dict['root']['body']['section'][0] # 獲取第二個section標簽的id dict['root']['body']['section'][1]['@id']
運行如下:

參考:
