的Python列表這是一個示例XML文件內容,我有工作:解析XML文件字典
<states>
<state name="foo">
<and>
<eq><text value="bar" /></eq>
<or>
<eqnull><text value="bar2" /></eqnull>
<eqnull><text value="bar3" /></eqnull>
</or>
</and>
</state>
</states>
這種結構是不可預測的,它可以在每個狀態截然改變。它可以,例如,是這樣的:
<states>
<state name="foo">
<and>
<or>
<eq><text value="bar" /></eq>
<eq><text value="bar2" /></eq>
</or>
<eqnull><selectedText value="bar3" number="1"></eqnull>
</and>
</state>
</states>
從這種結構的不可預測性
獨立,我想將它解析到字典的Python列表,它看起來像這樣(相應於第一XML爲例):
[{'and': {'eq': {'text': {'value': 'bar'}}}},
{'and': {'or': [{'eqnull': {'text': {'value': 'bar2'}}},
{'eqnull': {'text': {'value': 'bar3'}}},]}}]
我試圖使用ElementTree的,並使用獲得的狀態結構的內容作爲字典:
xmltodict.parse
然後遞歸地剝去該字典(按琴鍵)噸o我的字典清單。這個解決方案對我來說很難實現(不幸的是,我不是一個Python開發者......),如果有更簡單的方法來做這件事,我就會遊蕩。
我還記得另一個解決方案:遍歷XML結構中的每個節點,建立字典,最後是字典列表。但是有一個問題:當eq節點結束時我不知道。如果有某種方法可以識別結束節點/ eq,我認爲它是可以管理的。
或者,也許有一些是另一種方式在Python,對此我不知道的事情......
它看起來不錯!當然,我不明白這段代碼的一半(因爲我缺乏Python knowlagde),但我可以使用Google輕鬆理解它。當你悲傷時,輸出不像我喜歡的那樣,但我認爲它可以很容易地修復。不幸的是,我的團隊決定放棄XML並轉向另一個方向,所以我無法在現實生活中測試您的解決方案。也許有一天(當我有空閒的時候)。感謝幫助! –