1

试图将 xml 解析为文本我得到了这样的东西,

输入文件

<Item id="1"></Item>
<Item id="2"></Item>
<Item id="1"></Item>
<Item id="2"></Item>

电流输出

 Item ->1
 Item ->2
 Item ->2
 Item ->1

我想要的输出是,

Item ->1
Item ->2

(忽略重复的 id 值)

我用来获取当前输出的当前代码是,

list = node.getElementsByTagName('Item')
for item in list:
  output_id = item.getAttribute('id')
  print "Item ->", output_id

我已经尝试了数千种列表删除方法,但它们都输出了双 ID。帮助将不胜感激。Tks

4

2 回答 2

3

起初,每个 DOM 解析器都会返回双倍的 id,因为它们是不同的元素。为避免,请遍历 dom 树并将结果存储在dict对象中。这只会让你得到最后的项目。

升级版:

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.
于 2012-07-25T19:12:48.913 回答
1

请改用字典。output_id 作为键。

如果您只想拥有每个 id 的最后一个元素:

list = node.getElementsByTagName('Item')
item_dict = {}
for item in list:
  output_id = item.getAttribute('id')
  item_dict [output_id] = item
于 2012-07-25T19:03:02.623 回答