Che*_*ies 1 python xml pretty-print elementtree
我想创建一个 XML 文件。我试过了,但格式看起来很糟糕,它只显示一行。
就这个:
import xml.etree.cElementTree as ET
root = ET.Element("data")
doc = ET.SubElement(root, "status", date="20210123")
ET.SubElement(doc, "name", name="john").text = "some value1"
ET.SubElement(doc, "class", name="abc").text = "some vlaue2"
tree = ET.ElementTree(root)
tree.write("FILE.xml")
Run Code Online (Sandbox Code Playgroud)
输出是:
<data><status date="20210123"><name name="john">some value1</name><class name="abc">some vlaue2</class></status></data>
Run Code Online (Sandbox Code Playgroud)
但我的期望输出是:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<status>
<name name="john">some value1</name>
<class name="abc">some vlaue2</class>
</status>
</data>
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我一个想法,请。我真的很感激。谢谢
你需要
ET.tostring()获取字符串形式的 xmlxml.dom.minidom获取DOM 对象toprettyxml()DOM 对象获取 xml 作为格式化字符串代码:
import xml.etree.cElementTree as ET
import xml.dom.minidom
m_encoding = 'UTF-8'
root = ET.Element("data")
doc = ET.SubElement(root, "status", date="20210123")
ET.SubElement(doc, "name", name="john").text = "some value1"
ET.SubElement(doc, "class", name="abc").text = "some vlaue2"
dom = xml.dom.minidom.parseString(ET.tostring(root))
xml_string = dom.toprettyxml()
part1, part2 = xml_string.split('?>')
with open("FILE.xml", 'w') as xfile:
xfile.write(part1 + 'encoding=\"{}\"?>\n'.format(m_encoding) + part2)
xfile.close()
Run Code Online (Sandbox Code Playgroud)
输出文件
<?xml version="1.0" encoding="UTF-8"?>
<data>
<status date="20210123">
<name name="john">some value1</name>
<class name="abc">some vlaue2</class>
</status>
</data>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7794 次 |
| 最近记录: |