myf*_*web 1 python xml dom minidom
如何?创建了一个文档和一个元素:
import xml.dom.minidom as d
a=d.Document()
b=a.createElement('test')
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果我手动设置它,getElementById找不到它.
b.setAttribute('id', 'something')
a.getElementById('something')
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
这里有两件事是错的.
Document.getElementById只会找到文档中实际存在的元素.在这里,您已创建b但未实际将其添加到文档中.(它在JavaScript中完全相同.)
您必须使用标记id为ID属性setIdAttribute.(有没有必要,因为在HTML文档中要做到这一点在JavaScript中,属性进行命名id被自动认为是ID属性,逻辑不够好,但XML不会.不会自动把指定的属性id作为标识,你可以明确地宣布,他们在你的DTD或setIdAttribute单独调用每个ID属性.我不确定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')
Run Code Online (Sandbox Code Playgroud)
之后,getElementById工作:
>>> a.getElementById('x')
<DOM Element: test at 0xb77712ec>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9741 次 |
| 最近记录: |