python - 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'))
这产生
<MarketValueGrid>
<CalculationOutputs/>
</MarketValueGrid>
我需要的是:
<MarketValueGrid>
<CalculationOutputs>
</CalculationOutputs>
</MarketValueGrid>
解决方案
看看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>
推荐阅读
- javascript - 根据其他输入值将复选框设置为选中
- python - Pytest 未按预期运行,未找到模块或收集 0 个项目
- c++ - 我越来越多地使用内存,不明白为什么
- c# - 异常对象未在 JsonResult 构造函数中序列化
- excel - Me.ListBox1.Clear 产生运行时错误“- 2147467259(80004005)”:未指定的错误
- node.js - Mongodb - 应用聚合和匹配后查找不同项目的计数
- javascript - Angular - 在 eventlistener 函数中调用服务函数返回未定义的错误
- database - SQL 视图别名在 H2 SELECT 语句中不起作用
- android - 如何更改 TextView 上的 drawableL 图标大小?
- android - 无法使用片段滚动带有 recyclerview 的折叠工具栏