Python中漂亮打印XML

2025年1月5日 | 阅读 5 分钟

引言

在本教程中,我们将学习如何在 Python 中美化打印 XML。在 Python 中处理 XML 数据时,使其可读且结构化可以提高代码的可理解性和可管理性。漂亮地打印 XML 或使用适当的缩进和换行符对其进行格式化是实现这些目标的重要过程。基本上,XML 代表可扩展标记语言。它用于编码人类和机器都可以理解的信息。XML 格式存储的数据易于理解和操作。在处理 XML 时有三件重要的事情需要记住,那就是简洁性、多功能性和可用性。

在本教程中,我们将探讨两种使用 Python 打印 XML 的方法:xml.dom.minidom 和 xml.etree.ElementTree。通过理解这个过程,开发人员可以有效地以有组织且可视化的方式呈现 XML 数据,从而更容易进行分析和管理。

如何在 Python 中打印 XML?

Python 中有两种美化打印 XML 的方法,如下所示:

方法 1:使用 xml.dom.minidom

在这里,我们提供了一些在 Python 中使用 xml.dom.minidom 美化打印 XML 的步骤。步骤如下:

  1. 导入所有必需的模块:首先,我们需要导入 'xml.dom.minidom' 模块,该模块深度使用了 Document Object Model (DOM) API 进行 XML 解析。
  2. 定义 'pretty_print_xml_minidom' 函数:该函数接受 XML 字符串作为输入,并负责使用 "xml.dom.minidom" 模块解析和打印美化后的 XML。
  3. 解析 XML 字符串:在 'pretty_print_xml_minidom' 函数中,我们使用 'xml.dom.minidom.parseString()' 方法解析 XML 字符串,然后创建一个 DOM 对象。
  4. 打印美化后的 XML:接下来,我们使用 DOM 对象的 "toprettyxml()" 方法创建一个美化后的 XML 字符串。我们将 "indent" 参数传递给值 `" "`,以指定所需的缩进级别(在本例中为两个空格)。
  5. 删除空行:默认情况下,'toprettyxml()' 函数会在输出中添加空白行。为了删除这些空白行,我们使用换行符 (`\n`) 对 XML 字符串进行分割,删除每行的前导或空格,然后将非空行重新连接起来。
  6. 美化打印 XML:最后,我们在 Python 中打印美化后的 XML 字符串的结果。

程序代码

在这里,我们提供了使用 Python 中的 xml.dom.minidom 打印美化 XML 字符串的程序代码。它正在解析 DOM API。代码如下:

输出

现在,我们编译并运行上述程序,然后在 Python 中找到美化打印的 XML 字符串。美化打印的 XML 输出如下:

<?xml version="1.0" ?>
<jtp>
  <element attribute="value">
    <Name>Priyanka Adhikary</Name>
  </element>
</jtp>

方法 2:使用 xml.etree.ElementTree

在这里,我们提供了一些在 Python 中使用 xml.etree.ElementTree 美化打印 XML 的步骤。步骤如下:

  1. 导入必需的模块:首先,我们导入 'xml.etree.ElementTree' 模块,该模块提供了一个快速高效的 API 来解析和处理 XML。
  2. 定义 'Indent' 函数:这是一个特殊函数,它递归地为 XML 元素添加缩进。它必须有一个 "elem" 参数(XML 元素)和一个可选的 "level" 参数,该参数指示当前缩进级别(默认为 0)。
  3. 缩进 XML:在 "indent" 函数中,我们通过更改 XML 元素的 "text" 和 "tail" 属性来添加缩进。"text" 字符表示紧跟在开始标签之后的文本,而 "tail" 字符表示紧跟在结束标签之前的文本。通过为这些产品添加缩进,我们可以实现更好的打印。
  4. 定义 'pretty_print_xml_elementtree' 函数:该函数接受 XML 字符串作为输入,并负责使用 Python 中的 'xml.etree.ElementTree' 模块解析 XML 并对其进行美化打印。
  5. 解析 XML 字符串:在 'pretty_print_xml_elementtree' 函数中,我们使用 `ET.fromstring()` 方法解析 XML 字符串并创建 ElementTree 对象。
  6. 缩进 XML:我们调用 XML 元素的 'indent()' 函数来递归地缩进所有元素。
  7. 将 XML 内容转换回字符串:我们使用 ET.tostring() 方法将 XML 内容转换回字符串表示形式。为了确保所得字符串的正确编码,我们将 "encoding" 参数传递给值 "unicode"。
  8. 打印美化后的 XML:最后,我们在 Python 中打印美化后的 XML 字符串。

程序代码

在这里,我们提供了使用 Python 中的 xml.etree.ElementTree 模块打印美化 XML 字符串的程序代码。它定义了一个递归缩进 XML 元素的自定义函数。代码如下:

输出

现在,我们编译并运行上述程序,然后在 Python 中找到美化打印的 XML 字符串。美化打印的 XML 输出如下:

<jtp>
  <element attribute="value">
    <Name>Priyanka Adhikary</Name>
  </element>
</jtp>

结论

在本教程中,我们正在学习如何在 Python 中美化打印 XML。因此,在 Python 中美化打印 XML 对于提高 XML 文件的可读性和结构至关重要。开发人员可以使用 xml.dom.minidom 或 xml.etree.ElementTree 模块轻松地以高质量格式化 XML。通过使用这些技术,程序员可以在 Python 项目中处理 XML 文件时,提高代码理解能力,简化调试,并支持更好的协作。