ElementTree 模块能不能将xml文件格式化
时间: 2024-10-24 11:15:56 浏览: 15
`xml.etree.ElementTree` 模块本身并不直接提供格式化 XML 文件的功能,但它允许你创建和修改 XML 结构。如果你想格式化输出 XML,你可以手动构建字符串,然后使用字符串模板(如 `'{indent}'*level + elem.tag + ...`)配合适当的缩进来达到美化的效果。另外,Python 标准库中的 `xml.dom.minidom` 提供了一个名为 `toprettyxml()` 的方法,可以直接生成格式化的 XML 字符串。
例如,你可以这样做:
```python
import xml.etree.ElementTree as ET
# 创建一个 XML 元素树
root = ET.Element('root')
child1 = ET.SubElement(root, 'child1')
child2 = ET.SubElement(root, 'child2')
# 自定义格式化
def indent(elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
# 打印格式化后的 XML
formatted_xml = ET.tostring(root, encoding='unicode', method='xml').replace('\n', '')
pretty_xml = indent(ET.fromstring(formatted_xml)) + '\n'
print(pretty_xml)
```
阅读全文