在Python中處理XML資料時,確保其可讀性和結構可以大幅增強程式碼的理解和可維護性。對XML進行漂亮列印,即使用適當的縮排和換行進行格式化,是實現這些目標的有價值的技術。
在本文中,我們將探討兩種使用 Python 漂亮列印 XML 的不同方法:xml.dom.minidom 和 xml.etree.ElementTree。透過了解這些方法,開發人員可以有效地以有組織且具有視覺吸引力的方式呈現 XML 數據,從而更輕鬆地進行分析和操作。
以下是我們可以在 Python 中執行漂亮列印的兩種方法 -
程式2:使用xml.etree.ElementTree
導入所需模組:我們首先導入
`xml.etree.ElementTree`定義`indent`函數:這是一個自訂函數,用於遞歸地向XML元素新增縮排。它接受一個`elem`參數(XML元素)和一個可選的
`level`縮排XML:在`indent` 函數中,我們透過修改`text` 和`tail` 新增縮排> XML元素的屬性。 `text` 屬性表示緊接開始標記之後的文本,
`tail`定義 `pretty_print_xml_elementtree` 函數:此函數將 XML 字串作為輸入,並負責使用
`xml.etree.ElementTree` 解析和漂亮列印 XML。#解析XML字串:在`pretty_print_xml_elementtree`函數內部,我們使用
`ET.fromstring()`縮排 XML:我們在 XML 的根元素上呼叫
`indent()`將 XML 元素轉換回字串:我們使用 `ET.tostring()` 方法將 XML 元素轉換回字串表示形式。我們傳遞值為
`"unicode"`
這兩個程式提供了不同的方法來實現XML的漂亮列印。第一個程式利用`xml.dom.minidom`提供的DOM API來解析並漂亮列印XML,而第二個程式使用
`xml.etree.ElementTree`模組,並定義了一個自訂函數來遞歸地為XML元素新增縮排。
import xml.dom.minidom def pretty_print_xml_minidom(xml_string): # Parse the XML string dom = xml.dom.minidom.parseString(xml_string) # Pretty print the XML pretty_xml = dom.toprettyxml(indent=" ") # Remove empty lines pretty_xml = "\n".join(line for line in pretty_xml.split("\n") if line.strip()) # Print the pretty XML print(pretty_xml) # Example usage xml_string = ''' <root> <element attribute="value"> <subelement>Text</subelement> </element> </root> ''' pretty_print_xml_minidom(xml_string)
<?xml version="1.0" ?> <root> <element attribute="value"> <subelement>Text</subelement> </element> </root>
import xml.etree.ElementTree as ET def indent(elem, level=0): # Add indentation indent_size = " " i = "\n" + level * indent_size if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + indent_size 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 def pretty_print_xml_elementtree(xml_string): # Parse the XML string root = ET.fromstring(xml_string) # Indent the XML indent(root) # Convert the XML element back to a string pretty_xml = ET.tostring(root, encoding="unicode") # Print the pretty XML print(pretty_xml) # Example usage xml_string = ''' <root> <element attribute="value"> <subelement>Text</subelement> </element> </root> ''' pretty_print_xml_elementtree(xml_string)
輸出
<root> <element attribute="value"> <subelement>Text</subelement> </element> </root>
以上是在Python中漂亮地列印XML的詳細內容。更多資訊請關注PHP中文網其他相關文章!