我正在尝试从数据帧生成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>
答案 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>