首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >python xml.dom.minidom.Attr问题

python xml.dom.minidom.Attr问题
EN

Stack Overflow用户
提问于 2010-05-07 09:52:49
回答 2查看 10.7K关注 0票数 3

使用minidom获取属性在Python中,可以使用" attributes“属性。例如node.attributes["id"].value

所以如果我有<a id="foo"></a>,就会得到"foo"node.attributes["id"]不返回命名属性的值,而是返回一个xml.dom.minidom.Attr实例。但是通过执行help('xml.dom.minidom.Attr')来查看对Attr的帮助,并没有提到这个神奇的"value"属性。我喜欢通过查看类型层次结构、实例方法等来学习"value"。这个API属性是从哪里来的?为什么它没有列在Attr类的页面中?唯一提到的数据描述符是isIdlocalNameschemaType。它也不是从任何超类继承的。既然我是Python的新手,一些Python专家会给我一些启发吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-07 10:25:27

minidom只是xml.dom接口的一个实现,所以任何专门关于minidom的文档都只是关于它的特性或限制wrt xml.dom本身。

Attr上的xml.dom文档说,我引用一下:

属性继承自节点,因此继承其所有属性。

Node上的文档实际上以不同的方式命名该属性:nodeValue。但是,确实……

代码语言:javascript
代码运行次数:0
运行
复制
>>> 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这一事实可能被认为是不幸的,但是您可以始终坚持文档中的属性名称nodeValue。是的,它是冗长的,但是所有的minidom都是冗长的,而且比优秀的xml.etree.ElementTree慢(特别是.在后者的C实现中,xml.etree.cElementTree),所以如果您选择使用minidom,那么可能是因为您喜欢广泛的冗长...;-)。

票数 4
EN

Stack Overflow用户

发布于 2010-05-07 10:00:39

天啊,以前从来没注意过。你不是在开玩笑吧,任何地方都没有提到node.value。它肯定是在代码中设置的,尽管是在xml.dom.minidom中的def __setitem__下。

除了,我不知道该说什么,看起来你得用这句话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2785703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档