python處理xml資料

2021-06-01 08:41:04 字數 2241 閱讀 8399

由於最近需要使用python處理xml資料,因此到網上找了些資料學習了下。

最新學習的是python的xml.dom.minidom模組,按照資料上的說法,特地在python命令列環境驗證了一下:

執行之後卻發現xml.dom.minidom無法獲取xml節點之間的文字值,**如下:

>>> test = "14

">>> tdoc = xml.dom.minidom.parsestring(test)

w=tdoc.getelementsbytagname('b')

>>> node=w[0]

>>> node.nodevalue

網上的資料和python官方文件都說是用 node.nodevalue獲取節點的值,但是上述**卻輸出為空。注意到node.nodevalue只對text_node型別的節點有效,因此檢視一下節點b的型別:

>>> node.nodetype

11代表element_node節點型別。於是在網上和官方文件找了半天,也沒有獲取到什麼有用的資訊。不得以,只好看看其他的模組。在網上的另一篇文章中

對比了python處理xml的模組效能優勢,於是選擇了 celementtree 模組,測試**如下:

>>> import celementtree

>>> dir(celementtree )

['comment', 'element', 'elementpath', 'elementtree', 'pi', 'processinginstruction', 'qname', 'subelement', 'treebuilder', 'version', 'xml', 'xmlid', 'xmlparser', 'xmlparsererror', 'xmltreebuilder', '__doc__', '__file__', '__name__', '__version__', 'dump', 'fromstring', 'iselement', 'iterparse', 'parse', 'tostring']

>>> test = "1wewew

">>>

>>> dom = celementtree.parse(test)

traceback (most recent call last):

file "", line 1, in ?

file "", line 45, in parse

file "", line 22, in parse

ioerror: [errno 2] no such file or directory: "1wewew

">>> dom = celementtree.fromstring(test)

>>> root = dom.getroot()

traceback (most recent call last):

file "", line 1, in ?

attributeerror: getroot

>>> type(dom)

>>> dir(dom)

>>> dom.find('b')

>>> w=dom.find('b')

>>> w.text

'1'>>> test = "1wewew"

>>> dom = celementtree.fromstring(test)

>>> dom.find('b')

>>> w=dom.find('b')

>>> w.text

'1'>>> w=dom.find('b')

>>> w.text        

'1'>>> w=dom.findall('b')

>>> type(w)

>>> w

[, ]

>>> w[1].text

'wewew'

>>> c=dom.find('c')

>>> dir(c)

>>> c.items()

[('id', '1')]

>>> c.get('id')

'1'>>>

不過, celementtree.fromstring(test)有乙個小小的陷進,當你要查詢的節點是root節點是,你無法使用dom.find(node)的方式獲取節點,而且也無法判斷當前節點是否是自己所需要的節點,乙個變通的方法:

str(dom).split(' ')[1][1:-1] == node:

可以通過判斷上述**的true和false來獲取

使用Python處理XML

很久沒有寫博文了,也很久沒有碰python了。剛好工作需要,小小動手了下。因為是在新機器上,所以就直接裝了python 3,反正以後也是要適應,不如早點。在使用python處理xml的問題上,首先遇到的是編碼問題。python並不支援gb2312,所以面對encoding gb2312 的xml檔案...

python 處理xml檔案

python 處理xml檔案 最近基因注釋需要查閱文獻是否報道過。由於基因很多,想了乙個辦法。ncbi上每個蛋白有關的登入號下會有文獻的題目。根據序列比對結果,然後調取對應的文獻。首先獲取小麥族 147389 所有的199754條蛋白序列,截止日期是17 5 22.末尾 python try imp...

使用Python處理XML

很久沒有寫博文了,也很久沒有碰python了。剛好工作需要,小小動手了下。因為是在新機器上,所以就直接裝了python 3,反正以後也是要適應,不如早點。在使用python處理xml的問題上,首先遇到的是編碼問題。python並不支援gb2312,所以面對encoding gb2312 的xml檔案...