在Python中漂亮地列印XML
在Python中處理XML資料時,確保其可讀性和結構可以大幅增強程式碼的理解和可維護性。對XML進行漂亮列印,即使用適當的縮排和換行進行格式化,是實現這些目標的有價值的技術。
在本文中,我們將探討兩種使用 Python 漂亮列印 XML 的不同方法:xml.dom.minidom 和 xml.etree.ElementTree。透過了解這些方法,開發人員可以有效地以有組織且具有視覺吸引力的方式呈現 XML 數據,從而更輕鬆地進行分析和操作。
如何在Python中漂亮地列印XML?
以下是我們可以在 Python 中執行漂亮列印的兩種方法 -
方法一:使用xml.dom.minidom
- 以下是我們將使用xml.dom.minidom執行漂亮列印的步驟 -
-
程式2:使用xml.etree.ElementTree
- 以下是我們使用 xml.etree.ElementTree 執行漂亮列印時將遵循的步驟 -
-
導入所需模組:我們首先導入
`xml.etree.ElementTree` 模組,該模組提供了一個快速且有效率的API,用於解析和操作XML。 -
定義`indent`函數:這是一個自訂函數,用於遞歸地向XML元素新增縮排。它接受一個`elem`參數(XML元素)和一個可選的
`level` 參數來指定目前的縮排等級(預設為0)。 -
縮排XML:在`indent` 函數中,我們透過修改`text` 和`tail` 新增縮排> XML元素的屬性。 `text` 屬性表示緊接開始標記之後的文本,
`tail` 屬性表示緊接結束標記之前的文字。透過向這些屬性添加縮進,我們實現了漂亮的列印。 -
定義 `pretty_print_xml_elementtree` 函數:此函數將 XML 字串作為輸入,並負責使用
`xml.etree.ElementTree` 解析和漂亮列印 XML。 -
#解析XML字串:在`pretty_print_xml_elementtree`函數內部,我們使用
`ET.fromstring()` 方法解析XML字串並建立一個ElementTree物件。 -
縮排 XML:我們在 XML 的根元素上呼叫
`indent()` 函數,以遞歸方式將縮排到所有元素。 -
將 XML 元素轉換回字串:我們使用 `ET.tostring()` 方法將 XML 元素轉換回字串表示形式。我們傳遞值為
`"unicode"` 的 `encoding` 參數,以確保結果字串的正確編碼。
這兩個程式提供了不同的方法來實現XML的漂亮列印。第一個程式利用`xml.dom.minidom`提供的DOM API來解析並漂亮列印XML,而第二個程式使用
`xml.etree.ElementTree`模組,並定義了一個自訂函數來遞歸地為XML元素新增縮排。
以下是使用上述兩種方法的程式範例 -
方案1:使用xml.dom.minidom
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>
程式2:使用xml.etree.ElementTree
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

在使用Python的pandas庫時,如何在兩個結構不同的DataFrame之間進行整列複製是一個常見的問題。假設我們有兩個Dat...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Uvicorn是如何持續監聽HTTP請求的? Uvicorn是一個基於ASGI的輕量級Web服務器,其核心功能之一便是監聽HTTP請求並進�...

本文討論了諸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和請求等流行的Python庫,並詳細介紹了它們在科學計算,數據分析,可視化,機器學習,網絡開發和H中的用途

在Python中,如何通過字符串動態創建對象並調用其方法?這是一個常見的編程需求,尤其在需要根據配置或運行...
