lxml:将多个混合内容文本+元素子节点添加到父元素

问题描述

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 (将#修改为@)