在Python中使用minidom获取属性,使用“attributes”属性。例如node.attributes["id"].value
所以,如果我有<a id="foo"></a>
,那应该给我"foo"
。 node.attributes["id"]
不返回指定属性的值,而是返回xml.dom.minidom.Attr
实例的值。
但是,通过Attr
查看help('xml.dom.minidom.Attr')
的帮助,无处可提到这个神奇的"value"
属性。我喜欢通过查看类型层次结构,实例方法等来学习API。这个"value"
属性来自哪里?为什么它没有列在Attr
类'页面中?提到的唯一数据描述符是isId
,localName
和schemaType
。它也不是从任何超类继承的。既然我是Python的新手,那么一些Python大师会启发吗?
答案 0 :(得分:4)
minidom
只是xml.dom
接口的实现,因此任何专门针对minidom的文档都只会关于xml.dom
本身的特性或限制
Attr上的xml.dom
文档说,我引用:
Attr继承自Node,所以继承 它的所有属性。
Node上的文档实际上以不同的方式命名属性:nodeValue
。但是,确实......:
>>> import xml.dom.minidom as xdm
>>> dom = xdm.parseString('<foo bar="baz"/>')
>>> root = dom.documentElement
>>> atr = root.getAttributeNode('bar')
>>> atr.nodeValue
u'baz'
记录的nodeValue
属性具有_un_documented别名value
这一事实可能被视为不幸,但您始终可以坚持使用已记录的,因此可以说是 right 属性名称,nodeValue
。是的,它很冗长,但是所有minidom
都是如此,并且比优秀的xml.etree.ElementTree慢(特别是在后者的C实现中,xml.etree.cElementTree
),所以大概是你选择的使用minidom
必须是因为你喜欢广泛的冗长...; - )。
答案 1 :(得分:0)
node.value
在任何地方都没有提到。它绝对是在xml.dom.minidom中的def __setitem__
下的代码中设置的。
不确定该说什么,看起来你必须使用它。