如何使用 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>
我用 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>