使用带有tostring和pretty_print的lxml的问题

我已经阅读了一些有关相关问题的答案,但是它们都与lxml tostring和pretty_print没有直接关系。

我正在使用lxml并尝试在Python 3.6上创建xml文件。

我发现的问题是元素没有被父元素包装和排序,并认为它与“ pretty_print”选项有关。

我需要实现的是:

<root>
    <element1></element1>
    <element2></element2>
    <child1></child1>
    <child2></child2>
</root>

我得到的结果是:

<root><element1></element1><element2></element2><child1></child1><child2></child2></root>

我正在使用的部分代码:

from lxml import etree as et

CompanyID = "Company Identification"
TaxRegistrationNumber = "Company Reg. Number"
TaxaccountingBasis = "File Tipe"                   
CompanyName = "Company Name"
Businessname = "Business Name"

root = et.Element("root")
header = et.SubElement(root,'Header')
header.tail = '\n'

data = (
       ('CompanyID',str(CompanyID)),('TaxRegistrationNumber',str(TaxRegistrationNumber)),('TaxaccountingBasis',str(TaxaccountingBasis)),('CompanyName',str(CompanyName)),('Businessname',str(Businessname)),)

for tag,value in data:
    if value is None :
        continue
    et.SubElement(header,tag).text=value

xml_txt = et.tostring(root,pretty_print=True,encoding="UTF-8")
print(xml_txt)

如果我将没有数据的元素打印到其中,则可以正常工作,而“ pretty_print”也可以正常工作。

如果我将数据添加到每个元素(使用上述变量),则“ pretty_print”将不起作用,并且结构会混乱。

怎么了?

kwhyill 回答:使用带有tostring和pretty_print的lxml的问题

我找到了。

我已经从代码中删除了“ header.tail ='\ n'”,并且现在可以正常使用了。

root = et.Element("root")
header = et.SubElement(root,'Header')
#header.tail = '\n'

谢谢大家

本文链接:https://www.f2er.com/3078867.html

大家都在问