尝试将xml解析为文本我得到了类似的东西,
输入文件
<Item id="1"></Item>
<Item id="2"></Item>
<Item id="1"></Item>
<Item id="2"></Item>
CURRENT OUTPUT
Item ->1
Item ->2
Item ->2
Item ->1
我希望的输出是,
Item ->1
Item ->2
(忽略重复的id值)
我用来获取CURRENT OUTPUT的当前代码是,
list = node.getElementsByTagName('Item')
for item in list:
output_id = item.getAttribute('id')
print "Item ->", output_id
我已尝试了数千个列表删除方法,但它们都输出了双重ID。非常感谢帮助。 TKS
答案 0 :(得分:3)
首先,每个DOM解析器都会返回doubled,因为它们是不同的元素。
要避免,请通过dom树并将结果存储在dict
对象中。这将只为您提供最后的项目。
<强> UPD:强>
list = node.getElementsByTagName('Item')
items = {}
for item in list:
output_id = item.getAttribute('id')
items[output_id] = item # Put items into dict to use them later.
for id in items:
print "Item[%d] -> %s" % (id, items[id]) # Only single item per id left.
更多'pythonic'方式:
list = node.getElementsByTagName('Item')
items = dict((item.getAttribute('id'), item) for item in list)
for id in items:
print "Item[%d] -> %s" % (id, items[id]) # Only single item per id left.
答案 1 :(得分:1)
请改用词典。 output_id作为键。
如果您想只包含每个id的最后一个元素:
list = node.getElementsByTagName('Item')
item_dict = {}
for item in list:
output_id = item.getAttribute('id')
item_dict [output_id] = item