问题描述
与lxml.etree
一起使用时,我试图构建一个XML文档,其中某些元素可能具有以下形式:
<foo>
There is some text here
<bar>and then a nested child element</bar>
And then some more text
</foo>
我不知道有多少个子节点,其中哪个是文本节点还是元素。这是通过遍历输入列表并根据列表中每个项目的类型来确定的,以决定是否要附加文本节点或元素。
例如:
parent = etree.Element('foo')
for item in input_data:
if isinstance(item,str):
# Append a text node (???)
pass
else:
parent.append(etree.Element(item['type'],item['text']))
显然,设置.text
并不能完成我想要的混合内容。我了解lxml.etree
没有可以附加的“文本节点元素”,并且可以使用.tail
将文本附加到最后一个子元素。但是为此使用.tail
似乎很麻烦,因为我必须跟踪最后一个元素,并检查是否需要调用append()
来添加新元素或设置.text
第一个文本子节点,或在最后一项上使用.tail
在其后设置一些文本。
是否有一种更清洁的方法来将混合内容附加到lxml
中的父元素上?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)