我想遍历dom节点的所有属性并获取名称和值
我试过这样的事情(文档对此并不是很冗长,所以我猜了一下):
for attr in element.attributes:
attrName = attr.name
attrValue = attr.value
循环错误:
for attr in element.attributes:
File "C:\Python32\lib\xml\dom\minidom.py", line 553, in __getitem__
return self._attrs[attname_or_tuple]
KeyError: 0
我是Python新手,请温柔
答案 0 :(得分:13)
有一种简短而有效(和pythonic?)的方式可以轻松完成
#since items() is a tUple list, you can go as follows :
for attrName, attrValue in element.attributes.items():
#do whatever you'd like
print "attribute %s = %s" % (attrName, attrValue)
如果您要实现的目的是将那些不方便的属性NamedNodeMap
转移到更有用的字典,您可以按照以下步骤进行操作
#remember items() is a tUple list :
myDict = dict(element.attributes.items())
见http://docs.python.org/2/library/stdtypes.html#mapping-types-dict 更确切地说,例如:
d = dict([('two', 2), ('one', 1), ('three', 3)])
答案 1 :(得分:2)
好的,看了this (somewhat minimal) documentation之后,我猜想以下解决方案取得了成功
#attr is a touple apparently, and items() is a list
for attr in element.attributes.items():
attrName = attr[0]
attrValue = attr[1]
答案 2 :(得分:1)
属性返回NamedNodeMap
,其行为与字典非常相似,但实际上并不是字典。请尝试循环iteritems()
attributes
{{1}}。 (请记住,无论如何,循环遍历常规字典都会在键上循环,因此在任何情况下,您的代码都无法正常工作。)