我使用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条目。
谢谢!
答案 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>