如何使用 etree.Element 从 xml 条目中插入文本

How to insert text out of xml entries with etree.Element

我用 lxml.etree 构建了一个 xml 文件,结果如下:

<BigData>
  <user>
    <enum>
      <tree>sometext</tree>
    </enum>
   </user>
</BigData>

我正在尝试输入并想出这个:

<BigData>
  <user>**this_is_the_extra_text**
    <enum>
      <tree>sometext</tree>
    </enum>
   </user>
</BigData>

知道怎么做吗? 如果我使用 user = SubElement(user, BigData).text = 'this_is_the_extra_text',我会得到一个错误。 注意:我只想要纯文本,而不是新的 xml 条目。

谢谢!

假设 user 是一个变量引用 <user> 元素,您可以简单地设置它的 text 属性 以将文本节点添加为第一个子节点。

这是演示的设置:

>>> from xml.etree import ElementTree as ET
>>> root = ET.Element('BigData')
>>> user = ET.SubElement(root, 'user')
>>> enum = ET.SubElement(user, 'enum')
>>> print ET.tostring(root)
<BigData><user><enum /></user></BigData>

下面是设置user.text后的输出:

>>> user.text = 'this_is_the_extra_text'
>>> print ET.tostring(root)
<BigData><user>this_is_the_extra_text<enum /></user></BigData>

如果你想在其他子元素之后添加文本节点(换句话说,文本节点不会成为第一个子元素),你需要设置 tail 属性 代替前面的元素。例如,在 enum 元素之后添加文本节点如下:

>>> enum.tail = 'this_is_the_extra_text'
>>> print ET.tostring(root)
<BigData><user><enum />this_is_the_extra_text</user></BigData>