StackOverflow似乎有很多解決方案將XML轉換爲Python字典,但它們都不會生成我正在尋找的輸出。我有以下XML:使用lxml將XML轉換爲Python字典
<?xml version="1.0" encoding="UTF-8"?>
<status xmlns:mystatus="http://localhost/mystatus">
<section1
mystatus:field1="data1"
mystatus:field2="data2" />
<section2
mystatus:lineA="outputA"
mystatus:lineB="outputB" />
</status>
lxml has an elegantly simple solution轉換XML字典:
def recursive_dict(element):
return element.tag, dict(map(recursive_dict, element)) or element.text
不幸的是,我得到:
('status', {'section2': None, 'section1': None})
代替:
('status', {'section2':
{'field1':'data1','field2':'data2'},
'section1':
{'lineA':'outputA','lineB':'outputB'}
})
我不能想象e出了如何獲得我想要的輸出,而不會使recursive_dict()函數複雜化。
我沒有綁定到lxml,並且我也可以使用字典的不同組織,只要它能夠提供我在xml中的所有信息即可。謝謝!
出於好奇,您爲什麼期望獲得段的屬性,而不是狀態的屬性?什麼魔法讓圖書館知道你想要什麼?還有...部分內容是屬性而不是元素的原因是什麼? – GreenAsJade 2014-10-31 02:01:20
XML來自我無法控制的來源。我需要能夠消費並採取行動。這就是爲什麼我說我會對詞典的另一個組織「很好」。我的目標是將所有的信息 - 無論是標籤,文本,屬性等 - 都變成一個簡單的結構,如字典。沒有「魔力」需要。 「無」的值是好的。我只想要捕獲XML中的所有信息。 – proximous 2014-10-31 03:50:02
這聽起來像你有一個解決方案,但我只是想指出,你顯示的所需輸出並不顯示_ALL_捕獲的信息。它顯示捕獲的部分的屬性,但不顯示狀態的屬性。 – GreenAsJade 2014-10-31 04:11:36