正如其他人所指出minidom是去這裏的路。您打開(並解析)文件,同時檢查節點,檢查節點是否與其相關並應讀取。這樣,你也知道你是否想讀取子節點。
扔在一起這似乎做你想做的。有些值是通過屬性位置而不是屬性名稱讀取的。而且沒有錯誤處理。最後的print()意味着它的Python 3.x.
我會把它作爲一個練習來改進,只是想發佈一個片段,讓你開始。
快樂黑客! :)
xml.txt
<doc>
<id name="X">
<type name="A">
<min val="100" id="80"/>
<max val="200" id="90"/>
</type>
<type name="B">
<min val="100" id="20"/>
<max val="20" id="90"/>
</type>
</id>
</doc>
parsexml.py
from xml.dom import minidom
data={}
doc=minidom.parse("xml.txt")
for n in doc.childNodes[0].childNodes:
if n.localName=="id":
id_name = n.attributes.item(0).nodeValue
data[id_name] = {}
for j in n.childNodes:
if j.localName=="type":
type_name = j.attributes.item(0).nodeValue
data[id_name][type_name] = [(),()]
for k in j.childNodes:
if k.localName=="min":
data[id_name][type_name][0] = \
(k.attributes.item(1).nodeValue, \
k.attributes.item(0).nodeValue)
if k.localName=="max":
data[id_name][type_name][1] = \
(k.attributes.item(1).nodeValue, \
k.attributes.item(0).nodeValue)
print (data)
輸出:
{'X': {'A': [('100', '80'), ('200', '90')], 'B': [('100', '20'), ('20', '90')]}}
這種問題已被問了幾次。答案可能能夠幫助你。 http://stackoverflow.com/questions/191536/converting-xml-to-json-using-python http://stackoverflow.com/questions/471946/how-to-convert-xml-to-json- in-python – Thomas 2009-12-15 16:04:09