无法转储或写入ElementTree元素

and*_*y47 6 python xml elementtree

我输出即使是最简单的Element(Tree)实例也有问题.如果我在Python 2.7.1中尝试以下代码

>>> from xml.etree.ElementTree import Element, SubElement, tostring
>>> root = Element('parent')
>>> child = Element('child')
>>> SubElement(root, child)
>>> tostring(root)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

TypeError: cannot serialize <Element 'root' at 0x9a7c7ec> (type Element)
Run Code Online (Sandbox Code Playgroud)

我必须做错事,但文档并没有指出任何明显的事情.

use*_*019 9

SubElement不将元素作为第二个参数.该API文档给签名

SubElement(parent, tag, attrib={}, **extra)
Run Code Online (Sandbox Code Playgroud)

即第二个参数是子元素的标记(即名称)

ElementTree的文档提供更多细节

要添加子元素,请查看Element上的append方法,例如

root.append(child)
Run Code Online (Sandbox Code Playgroud)


Pil*_*ill 5

http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.SubElement

SubElement的第二个参数是标记(str)而不是Element,它自己创建Element实例:

>>> SubElement(root, 'child')
0: <Element 'child' at 0x1f2dfb0>
>>> tostring(root)
1: '<parent><child /></parent>'
Run Code Online (Sandbox Code Playgroud)