Python 将lxml与tostring和pretty_print一起使用时出现的问题
我已经阅读了一些相关问题的答案,但没有一个与lxml tostring和pretty_print直接相关 我正在使用lxml并试图在python3.6上创建一个xml文件 我发现的问题是,元素没有按照父元素进行包装和排序,并且认为它与“pretty_print”选项有关 我需要实现的是:Python 将lxml与tostring和pretty_print一起使用时出现的问题,python,lxml,tostring,pretty-print,Python,Lxml,Tostring,Pretty Print,我已经阅读了一些相关问题的答案,但没有一个与lxml tostring和pretty_print直接相关 我正在使用lxml并试图在python3.6上创建一个xml文件 我发现的问题是,元素没有按照父元素进行包装和排序,并且认为它与“pretty_print”选项有关 我需要实现的是: <root> <element1></element1> <element2></element2> <child1&g
<root>
<element1></element1>
<element2></element2>
<child1></child1>
<child2></child2>
</root>
如果我在没有数据的情况下打印元素,它可以正常工作,“pretty_print”也可以正常工作
如果我将数据添加到每个元素中(使用上述变量),那么“pretty_print”将无法工作,结构也会变得混乱
怎么了?我找到了
我已经从代码中删除了“header.tail='\n',它现在可以工作了
root = et.Element("root")
header = et.SubElement(root, 'Header')
#header.tail = '\n'
谢谢大家如果你们能提供一个。代码包含未定义的变量,如
desiredvalue1
。缩进很糟糕。旧代码只是一个例子。代码运行正常,标识是由于复制/粘贴造成的。编辑并添加了一些真实的代码。我无法发布结果,因为平台正在更改实际结果,但它以“b”开头,所有元素的值都在同一行,没有“pretty_print”格式对不起,我是个唠叨者,但我仍然无法复制、粘贴和运行您的代码。对不起。我忘了在顶部加上进口。将代码更改为更易于复制和粘贴,但结果在输出格式上是相同的错误
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)
root = et.Element("root")
header = et.SubElement(root, 'Header')
#header.tail = '\n'