使用Python的xml.dom.minidom

3 投票
2 回答
2334 浏览
提问于 2025-04-15 14:55

我正在尝试使用Python的xml.dom.minidom库,但遇到了以下错误:

>>> from xml.dom import minidom
>>> xdocument = minidom.Document()
>>> xrss = minidom.Element("rss")
>>> xdocument.appendChild(xrss)
<DOM Element: rss at 0xc1d0f8>
>>> xchannel = minidom.Element("channel")
>>> xrss.appendChild(xchannel)
Traceback (most recent call last):
  File "C:\Program Files\Wing IDE 3.2\src\debug\tserver\_sandbox.py", line 1, in ?
    # Used internally for debug sandbox under external interpreter
  File "c:\Python24\Lib\xml\dom\minidom.py", line 123, in appendChild
    _clear_id_cache(self)
  File "c:\Python24\Lib\xml\dom\minidom.py", line 1468, in _clear_id_cache
    node.ownerDocument._id_cache.clear()
AttributeError: 'NoneType' object has no attribute '_id_cache'
>>> 

有没有人知道这是为什么呢?

2 个回答

0

xdocument.appendChild(xrss) 替换成 xrss = xdocument.appendChild(xrss)。根据文档的说明:

Node.appendChild(newChild) 是把一个新的子节点加到这个节点的最后面,并返回这个新加的节点。如果这个节点之前已经在树里了,它会先被移除。

所以你需要把 xrss 赋值为 appendChild 返回的那个元素。

3

使用 xdocument.createElement('name') 来创建新的元素。这是DOM中创建元素的标准方法。

撰写回答