0

0

Pretty Print是什么 如何用代码美化输出的XML

月夜之吻

月夜之吻

发布时间:2026-01-30 13:07:02

|

215人浏览过

|

来源于php中文网

原创

Pretty Print 是将紧凑的 XML/JSON/HTML 字符串转为缩进换行的可读格式,不改变内容;Python 可用 minidom.toprettyxml()(轻量但不保留注释)或 ElementTree+minidom 组合(更健壮),命令行推荐 xmllint。

pretty print是什么 如何用代码美化输出的xml

什么是 Pretty Print(格式化输出

Pretty Print 指的是将原本紧凑、无换行、无缩进的 XML(或 JSON、HTML 等)字符串,转换为人类可读的、带缩进和换行的结构化文本。它不改变数据内容,只调整排版——比如把 12 变成多行缩进形式。

Python 用 xml.dom.minidom 实现 Pretty Print

这是标准库中最轻量、无需安装依赖的方式,适合简单 XML 字符串美化。注意:minidom 不保留注释和处理指令,且对非法/不规范 XML 容错性差。

  • 必须先用 parseString()parse() 加载为 DOM 对象,再调用 toprettyxml()
  • toprettyxml(indent=" ", newl="\n", encoding=None)indent 默认是两个空格,newl 控制换行符
  • 常见坑:toprettyxml() 会在每行末尾加空行(因节点间文本节点被视为空白),需用正则清理
from xml.dom import minidom

xml_str = 'AB' dom = minidom.parseString(xml_str) pretty_xml = dom.toprettyxml(indent=" ", newl="\n")

清理多余空行

clean_xml = "\n".join([line for line in pretty_xml.split("\n") if line.strip()]) print(clean_xml)

Python 用 xml.etree.ElementTree + xml.dom.minidom 组合方案

当需要保留命名空间、更健壮地解析(比如含 CDATA 或特殊字符),推荐先用 ElementTree 解析,再转给 minidom 格式化——因为 ElementTree 本身没有内置 pretty print 方法。

  • ElementTree.tostring() 输出的是 bytes,需 decode 成 str 后再喂给 minidom.parseString()
  • 若原始 XML 有编码声明(如 ),toprettyxml() 会重复写入,建议设 encoding=None 并手动加声明
  • 对大文件慎用:DOM 方式会全量加载到内存
import xml.etree.ElementTree as ET
from xml.dom import minidom

root = ET.fromstring('hello') rough_string = ET.tostring(root, encoding="unicode") reparsed = minidom.parseString(rough_string) pretty = reparsed.toprettyxml(indent=" ", newl="\n", encoding=None) print("\n".join(s for s in pretty.split("\n") if s.strip()))

命令行用 xmllint 快速美化本地 XML 文件

开发调试时最省事的方式:不用写代码,直接 shell 调用系统工具。前提是已安装 xmllint(Linux/macOS 通常随 libxml2 提供,Windows 可通过 Chocolatey 或手动下载)。

玄鲸Timeline
玄鲸Timeline

一个AI驱动的历史时间线生成平台

下载
  • 基础命令:xmllint --format input.xml,输出到终端;加 --output output.xml 可保存
  • 若 XML 编码不是 UTF-8,可能报错,加 --encode utf-8 强制转码
  • 注意:如果 XML 有 DTD 或 XSD 引用且网络不可达,xmllint 可能卡住或失败,加 --noblanks--dropdtd 视情况绕过

实际执行示例:

$ xmllint --format --encode utf-8 data.xml > formatted.xml

真正麻烦的不是选哪个方法,而是 XML 是否良构——哪怕少一个闭合标签,所有美化工具都会抛异常。动手前先用 xmllint --noout file.xml 或 Python 的 ET.parse() 做一次校验,比反复调试格式化逻辑省十倍时间。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

419

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

804

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

435

2024.06.27

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1902

2024.04.01

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

0

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号