lxml.etree 将元素插入 element.text
lxml.etree insert elements into element.text
我的字符串中有空 xml 元素,如下所示:
>>> s = """fizz buzz <pb n="44"/> bananas"""
已使用 etree.SubElement
方法将这些字符串分配给 xml 个元素:
>>> from lxml import etree as et
>>> root = et.Element('root')
>>> txt = et.SubElement(root, 'text')
>>> txt.text = s
>>> et.dump(root)
<root>
<text>fizz buzz <pb n="44"/> bananas</text>
</root>
摆弄 re.split()
和 etree 的 text
和 tail
我可以在 txt.text
中我想要的地方插入一个子元素 <pb n="44"/>
;然而,有时我在字符串中多次出现 <pb/>
元素,这使事情变得复杂:
>>> s1 = """foo bar <pb n="42"/> parrots like <pb n="43"/> eggs and spam"""
有没有一种直接的方法可以将这些元素插入到现有元素的 text
中,而无需过多地摆弄 text
和 tail
?
您可以使输入字符串成为格式正确的 XML 文档(以 text
作为根元素)并使用 fromstring()
将其解析为 Element 对象。然后将其附加到父级。
from lxml import etree as et
s1 = """foo bar <pb n="42"/> parrots like <pb n="43"/> eggs and spam"""
s2 = "<text>{0}</text>".format(s1)
text = et.fromstring(s2)
root = et.Element('root')
root.append(text)
et.dump(root)
输出:
<root>
<text>foo bar <pb n="42"/> parrots like <pb n="43"/> eggs and spam</text>
</root>
我的字符串中有空 xml 元素,如下所示:
>>> s = """fizz buzz <pb n="44"/> bananas"""
已使用 etree.SubElement
方法将这些字符串分配给 xml 个元素:
>>> from lxml import etree as et
>>> root = et.Element('root')
>>> txt = et.SubElement(root, 'text')
>>> txt.text = s
>>> et.dump(root)
<root>
<text>fizz buzz <pb n="44"/> bananas</text>
</root>
摆弄 re.split()
和 etree 的 text
和 tail
我可以在 txt.text
中我想要的地方插入一个子元素 <pb n="44"/>
;然而,有时我在字符串中多次出现 <pb/>
元素,这使事情变得复杂:
>>> s1 = """foo bar <pb n="42"/> parrots like <pb n="43"/> eggs and spam"""
有没有一种直接的方法可以将这些元素插入到现有元素的 text
中,而无需过多地摆弄 text
和 tail
?
您可以使输入字符串成为格式正确的 XML 文档(以 text
作为根元素)并使用 fromstring()
将其解析为 Element 对象。然后将其附加到父级。
from lxml import etree as et
s1 = """foo bar <pb n="42"/> parrots like <pb n="43"/> eggs and spam"""
s2 = "<text>{0}</text>".format(s1)
text = et.fromstring(s2)
root = et.Element('root')
root.append(text)
et.dump(root)
输出:
<root>
<text>foo bar <pb n="42"/> parrots like <pb n="43"/> eggs and spam</text>
</root>