目錄
如何在Python中漂亮地列印XML?
方法一:使用xml.dom.minidom
以下是使用上述兩種方法的程式範例 -
方案1:使用xml.dom.minidom
輸出
程式2:使用xml.etree.ElementTree
首頁 後端開發 Python教學 在Python中漂亮地列印XML

在Python中漂亮地列印XML

Sep 07, 2023 pm 07:41 PM
xml格式化 python列印xml 優美地展示xml

在Python中漂亮地列印XML

在Python中處理XML資料時,確保其可讀性和結構可以大幅增強程式碼的理解和可維護性。對XML進行漂亮列印,即使用適當的縮排和換行進行格式化,是實現這些目標的有價值的技術。

在本文中,我們將探討兩種使用 Python 漂亮列印 XML 的不同方法:xml.dom.minidom 和 xml.etree.ElementTree。透過了解這些方法,開發人員可以有效地以有組織且具有視覺吸引力的方式呈現 XML 數據,從而更輕鬆地進行分析和操作。

如何在Python中漂亮地列印XML?

以下是我們可以在 Python 中執行漂亮列印的兩種方法 -

方法一:使用xml.dom.minidom

    以下是我們將使用xml.dom.minidom執行漂亮列印的步驟 -
  • 導入所需的模組:我們首先導入「xml.dom.minidom」模組,該模組提供用於 XML 解析的文檔物件模型 (DOM) API 的輕量級實作。
  • 定義`pretty_print_xml_minidom`函數:函數接受一個XML字串作為輸入,並負責使用`xml.dom.minidom`解析和美化列印XML。
  • 解析XML字串:在`pretty_print_xml_minidom`函數內部,我們使用`xml.dom.minidom.parseString()`方法解析XML字串並建立DOM物件。
  • 漂亮列印 XML:接下來,我們在 DOM 物件上使用「toprettyxml()」方法來產生漂亮列印的 XML 字串。我們傳遞值為「」」的「indent」參數來指定所需的縮排等級(本例為兩個空格)。
  • 刪除空白行:預設情況下,`toprettyxml()` 在輸出中新增空白行。為了刪除這些空白行,我們用換行符 (`\n`) 分割漂亮的 XML 字串,刪除每行中的任何前導或尾隨空格,然後將非空白行重新連接在一起。
  • 列印漂亮的 XML:最後,我們列印產生的漂亮的 XML 字串。

程式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 字串。

這兩個程式提供了不同的方法來實現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 對於提高 XML 資料的可讀性和結構至關重要。無論是使用 xml.dom.minidom 或 xml.etree.ElementTree 函式庫,開發人員都可以輕鬆地使用適當的縮進來格式化 XML。透過採用這些技術,程式設計師在 Python 專案中處理 XML 資料時可以增強程式碼理解、簡化偵錯並促進更好的協作。 ###

以上是在Python中漂亮地列印XML的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何解決Linux終端中查看Python版本時遇到的權限問題? 如何解決Linux終端中查看Python版本時遇到的權限問題? Apr 01, 2025 pm 05:09 PM

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

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? 如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? Apr 02, 2025 am 07:18 AM

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

在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? 在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? Apr 01, 2025 pm 11:15 PM

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

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? 如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? Apr 02, 2025 am 07:15 AM

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

什麼是正則表達式? 什麼是正則表達式? Mar 20, 2025 pm 06:25 PM

正則表達式是在編程中進行模式匹配和文本操作的強大工具,從而提高了各種應用程序的文本處理效率。

Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Apr 01, 2025 pm 10:51 PM

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

哪些流行的Python庫及其用途? 哪些流行的Python庫及其用途? Mar 21, 2025 pm 06:46 PM

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

Python中如何通過字符串動態創建對象並調用其方法? Python中如何通過字符串動態創建對象並調用其方法? Apr 01, 2025 pm 11:18 PM

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

See all articles