如何使用lxml库的etree.tostring方法实现XML输出的美化?
- 内容介绍
- 相关推荐
本文共计941个文字,预计阅读时间需要4分钟。
基本原因通常为+XML+,没有正确解析出层次结构,或文档本身格式较少显式换行/缩进信息。lxml+不会猜测如何缩进——它仅在已有Element树的基础上,按深度插入换行和空格。
常见错误现象:etree.tostring(root, pretty_print=True) 输出仍是一行,或缩进错乱;甚至抛出 UnicodeEncodeError(尤其在 Python 2 或未指定编码时)。
- 确保你操作的是已解析的
etree.Element对象,不是原始字符串 —— 直接对字符串调用tostring无效 - 如果 XML 来自网络或文件,先用
etree.fromstring()或etree.parse()加载,别跳过解析步骤 - 默认编码是 UTF-8,若需其他编码(如 GBK),必须显式传
encoding="gbk",否则可能报错或输出乱码
如何让 pretty_print 真正生效:关键三步
不是加个参数就完事。要让缩进“看得见”,得配合解析、编码、输出三方面控制。
本文共计941个文字,预计阅读时间需要4分钟。
基本原因通常为+XML+,没有正确解析出层次结构,或文档本身格式较少显式换行/缩进信息。lxml+不会猜测如何缩进——它仅在已有Element树的基础上,按深度插入换行和空格。
常见错误现象:etree.tostring(root, pretty_print=True) 输出仍是一行,或缩进错乱;甚至抛出 UnicodeEncodeError(尤其在 Python 2 或未指定编码时)。
- 确保你操作的是已解析的
etree.Element对象,不是原始字符串 —— 直接对字符串调用tostring无效 - 如果 XML 来自网络或文件,先用
etree.fromstring()或etree.parse()加载,别跳过解析步骤 - 默认编码是 UTF-8,若需其他编码(如 GBK),必须显式传
encoding="gbk",否则可能报错或输出乱码
如何让 pretty_print 真正生效:关键三步
不是加个参数就完事。要让缩进“看得见”,得配合解析、编码、输出三方面控制。

