Skip to main content
 首页 » 编程设计

python之如何在 Python 的 xml.dom.minidom 中设置元素的 id

2025年05月04日13telwanggs

如何?创建了一个文档和一个元素:

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') 

我必须做什么?

请您参考如下方法:

这里有两点不对。

  1. Document.getElementById 只会查找文档中实际存在的元素。此处您创建了 b 但实际上并未将其添加到文档中。 (在 JavaScript 中完全一样。)

  2. 您必须使用 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>