Python 存储有缩进的XML

利用文件夹中

C:\Python38\Lib\xml\dom

中有一个minidom.py 中的方法。

1. 把内存中的根节点 root, 利用ET.tostring 转换成紧凑型的string

2. 利用minidom中parseString的方法,把上述紧凑型的字符串重新解析reparsed

3. 利用toprettyxml的方法,返回出漂亮的xml

复制代码
from xml.etree import ElementTree as ET
from xml.dom import minidom


def prettify(root):
    """
    将节点转换成字符串,并添加缩进。
    :param root:
    :return:
    """
    rough_string = ET.tostring(root, encoding='utf-8')
    reparsed = minidom.parseString(rough_string)
    return reparsed.toprettyxml(indent="\t")


root = ET.Element("Family", {"age": "20"})
tree = ET.ElementTree(root)

son1 = root.makeelement("Family", {"age": "18"})
son2 = root.makeelement("Family", {"age": "19"})
root.append(son1)
root.append(son2)
grandson = ET.SubElement(son1, "family", {"sex": "feman"})
grandson.text = "这是一个孙子"

new_str = prettify(root)
f = open("pretty.xml",'w',encoding='utf-8')
f.write(new_str)
f.close()

# tree.write("pretty.xml", xml_declaration=True, short_empty_elements=True, encoding='utf-8')
复制代码

 

posted @ 2021-02-16 17:28  xuwenwei  阅读(569)  评论(0)    收藏  举报
编辑推荐:
· 大数据高并发核心场景实战,数据持久化之冷热分离
· 运维排查 | SaltStack 远程命令执行中文乱码问题
· Java线程池详解:高效并发编程的核心利器
· 从“看懂世界”到“改造世界”:AI发展的四个阶段你了解了吗?
· 协程本质是函数加状态机——零基础深入浅出 C++20 协程
阅读排行:
· 基于.net6的一款开源的低代码、权限、工作流、动态接口平台
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
· .NET 8 gRPC 实现高效100G大文件断点续传工具
· LinqPad:C#代码测试学习一品神器
· 基于 C# 编写的轻量级工控网关和 SCADA 组态软件
点击右上角即可分享
微信分享提示