我有一個相當簡單的XML結構,它具有一定的可變性,所以我想簡化爲它編寫解析器。眼下XML類似於此:從Python minidom獲取標記列表XML
<items>
<item>
<Tag1>Some Value</Tag1>
<Tag2>Some Value</Tag1>
<Tag3>Some Value</Tag1>
</item>
</items>
我已經想通了如何正確地得到「一些價值」出來的標籤,進入我的數據字典,但我不一定知道所有的標籤可能會或可能不會在場。我想遍歷項目類中的所有內容,並將該標記作爲值來獲取,並且該值是一個單獨的值。
現在我的代碼如下所示:
from xml.dom import minidom
from collections import defaultdict
project = defaultdict(list)
xml_file = minidom.parse(sys.argv[1])
for value in xml_file.getElementsByTagName("Tag1"):
project['Tag1'].append(xml_file.getElementsByTagName("Tag1")[0].firstChild.data)
for value in xml_file.getElementsByTagName("Tag2"):
project['Tag2'].append(xml_file.getElementsByTagName("Tag2")[0].firstChild.data)
print project.items()
的原因「爲價值」的循環,是因爲我可能在這方面的標籤多次,我希望所有的人。我很想有像
for tag in item:
for value in xml_file.getElementsByTagName(tag):
project[tag].append(xml_file.getElementsByTagName(tag)[0].firstChild.data)
這樣,如果我有40個不同的標籤我一個)沒有寫80行代碼(懶惰)和b)可以在翻譯如果處理動態輸出XML將在未來添加/減少標籤,因爲我不控制源,但我知道它有什麼能力。
我理解第一部分 - 我的問題是如何我是否爲那些字符串掃描那棵樹?我不知道「Tag1」或「Tag2」是什麼,但我知道他們將採用這種格式,並且在項目樹 – szumlins
中您想要所有標籤嗎?這還包括'items' /'item', –
或者你已經知道'item'標籤了,你只想考慮它的孩子嗎? –