Python lxml-多个根目录和格式问题
我试图从数据帧生成一个xml文件。除了这个我搞不懂的小问题,一切都很好。为了便于理解,我删除了不必要的代码Python lxml-多个根目录和格式问题,python,xml,lxml,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')) 这就产生了 <MarketVal
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>
看看,您看到的是一个空元素
一旦你把一个子节点放在下面,或者把一些内容(即使它是一个空白)放在节点中,你就会得到一种与你所寻找的相似的格式
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>
<MarketValueGrid>
<CalculationOutputs></CalculationOutputs>
</MarketValueGrid>
而且,
和
之间没有语义上的区别,不管序列化程序是否允许您选择表示或决定使用哪个表示,都是由实现定义的。@zhqiat感谢您这么好地解释了它。结果是,我在第三级传递的是root而不是root1,这造成了这种行为,让我很困惑。