如何?创建了一个文档和一个元素:
import xml.dom.minidom as d
a=d.Document()
b=a.createElement('test')
setIdAttribute 不起作用:(
b.setIdAttribute('something')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/xml/dom/minidom.py", line 835, in setIdAttribute
self.setIdAttributeNode(idAttr)
File "/usr/lib/python2.6/xml/dom/minidom.py", line 843, in setIdAttributeNode
raise xml.dom.NotFoundErr()
xml.dom.NotFoundErr
如果我手动设置它,getElementById 找不到它。
b.setAttribute('id', 'something')
a.getElementById('something')
我必须做什么?
请您参考如下方法:
这里有两点不对。
Document.getElementById只会查找文档中实际存在的元素。此处您创建了b但实际上并未将其添加到文档中。 (在 JavaScript 中完全一样。)您必须使用
setIdAttribute将id标记为 ID 属性。 (在 JavaScript 中不需要这样做,因为在 HTML 文档中,名为id的属性在逻辑上被自动视为 ID 属性。但是 XML 不会自动处理名为id作为 ID;您可以显式声明它们在您的 DTD 中,或者为每个 ID 属性单独调用setIdAttribute。我不确定 DTD 是否适用于 minidom ,这不是完整的 DOM 实现。)
像这样:
import xml.dom.minidom as d
a = d.Document()
b = a.createElement('test')
a.appendChild(b)
b.setAttribute('id', 'x')
b.setIdAttribute('id')
之后,getElementById 起作用了:
>>> a.getElementById('x')
<DOM Element: test at 0xb77712ec>
