lxml-多个根并存在格式问题

时间:2018-08-06 20:43:52

标签: python xml lxml

我正在尝试从数据帧生成xml文件。除了这个我无法弄清楚的小问题之外,一切都很好。为了便于理解,我删除了不必要的代码。

from lxml import etree as et

root = et.Element('MarketValueGrid')
root1 = et.SubElement(root,'CalculationOutputs')
print(et.tostring(root, pretty_print=True).decode('utf-8'))

这产生

<MarketValueGrid>
 <CalculationOutputs/>
</MarketValueGrid>

我需要的是:

<MarketValueGrid>
 <CalculationOutputs>
 </CalculationOutputs>
</MarketValueGrid>

1 个答案:

答案 0 :(得分:1)

看看xml spec,您所看到的是一个空元素。

一旦将子节点放在该节点的下面或某个内容(即使是空白区域)中,您将获得与所需内容相似的格式。

from lxml import etree as et

root = et.Element('MarketValueGrid')
root1 = et.SubElement(root,'CalculationOutputs')
root2 = et.SubElement(root1,'Value')


print(et.tostring(root, pretty_print=True).decode('utf-8'))

<MarketValueGrid>
  <CalculationOutputs>
    <Value/>
  </CalculationOutputs>
</MarketValueGrid>

在您的情况下,添加root1 = et.SubElement(root,'CalculationOutputs').text=""将生成您要查找的输出。

<MarketValueGrid>
  <CalculationOutputs></CalculationOutputs>
</MarketValueGrid>