lxml - 多根和格式化问题
lxml - multiple root and issue with formatting
我正在尝试从数据帧生成 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>
看看xml spec,你看到的是一个空元素。
一旦您将子节点放在下面或节点中的某些内容(即使它是空 space),您将获得与您正在寻找的格式类似的格式。
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>
我正在尝试从数据帧生成 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>
看看xml spec,你看到的是一个空元素。
一旦您将子节点放在下面或节点中的某些内容(即使它是空 space),您将获得与您正在寻找的格式类似的格式。
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>