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

时间:2016-12-16 12:00:53

标签: python elementtree

我使用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条目。

谢谢!

1 个答案:

答案 0 :(得分:1)

假设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>