使一个节点成为另一个节点的子元素

Make one node subelement of another

我正在尝试在 <Items> 父块中添加 <Item> 块。获取,例如:

<Items>
    <Item>...data...</Item>
    <Item>...data...</Item>
    <Item>...data...</Item>
</Items>

这是我目前的情况:

>>> from lxml.etree import Element
>>> items=Element('Items')
>>> item=Element('Item')

如何在项目下方添加项目?我尝试做的是:

>>> SubElement(items, item)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 2935, in lxml.etree.SubElement (src/lxml/lxml.etree.c:67070)
  File "apihelpers.pxi", line 175, in lxml.etree._makeSubElement (src/lxml/lxml.etree.c:15221)
  File "apihelpers.pxi", line 1498, in lxml.etree._getNsTag (src/lxml/lxml.etree.c:27720)
  File "apihelpers.pxi", line 1516, in lxml.etree.__getNsTag (src/lxml/lxml.etree.c:27870)
  File "apihelpers.pxi", line 1393, in lxml.etree._utf8 (src/lxml/lxml.etree.c:26460)
TypeError: Argument must be bytes or unicode, got '_Element'

您可以使用 Element class.append() 方法:

>>> from lxml.etree import Element, tostring
>>> items = Element('Items')
>>> item = Element('Item')
>>> item.text = "foo"
>>> items.append(item)
>>> print(tostring(items, pretty_print=True))
<Items>
  <Item>foo</Item>
</Items>