我有一个相当简单的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'标签了,你只想考虑它的孩子吗? –