跳過到頁腳內容
PYTHON 幫助

用 ElementTree 解析 Python 中的 XML

XML(可擴展標記語言)在數據處理和文件生成中是一種受歡迎且靈活的格式,用於表示結構化數據。 Python的標準庫包括xml.etree,它為開發者提供了一套強大的工具來解析或創建XML數據、操作子元素以及以編程方式生成XML文檔。

與IronPDF相結合,一個.NET庫,用於創建和編輯PDF文檔,開發者可以加速XML元素對象數據處理和動態PDF文檔生成。 在這本詳盡的指南中,我們將深入探討Python的xml.etree,探索其主要功能和特性,並向您展示如何將其與IronPDF集成,以便在數據處理中解鎖新的可能性。

什麼是xml.etree?

xml.etree 是Python標準庫的一部分。 它具有後綴.etree,也稱為ElementTree,它為處理和修改XML文檔提供了一個簡單有效的XML API。 它使程序員能夠以層次樹結構的方式與XML數據進行交互,簡化了XML文件的導航、修改和編程生成。

儘管它輕量且易於使用,但xml.etree為處理XML根元素數據提供了強大的功能。 它提供了一種從文件、字符串或類文件對象解析XML數據文檔的方式。 解析後的XML文件顯示為Element對象的樹。 開發人員可以導航此樹,訪問元素和屬性,並執行各種操作,如編輯、刪除或添加元素。

XML.etree Python(開發人員如何工作):圖1 - xml.etree - 通用元素結構構建器網頁

xml.etree的特點

解析XML文檔

xml.etree中提供了從字符串、文件或類文件對象解析XML文檔的方法。 可以使用parse()函數處理XML材料,並生成一個ElementTree對象,該對象表示具有有效元素對象的解析後的XML文檔。

導航XML樹

開發者在文檔被處理後,可以使用xml.etree遍歷XML聲明樹中的元素,使用像find()findall()iter()這樣的函數。 這些方法簡化了基於標籤、屬性或XPath表達式訪問某些元素的過程。

修改XML文檔

在XML文檔中,可以使用xml.etree增加、編輯和刪除組件和屬性。 以編程方式更改XML樹的內在層次數據格式結構和內容,使得數據修改、更新和轉換成為可能。

序列化XML文檔

xml.etree允許使用ElementTree.write()等函數將XML樹序列化為字符串或類文件對象,經過修改的XML文檔。 這使開發人員能夠創建或修改XML樹並生成XML輸出。

XPath支持

xml.etree提供XPath支持,XPath是一種從XML文檔中選擇節點的查詢語言。 開發者可以使用XPath表達式在XML樹內進行查詢和過濾,以執行複雜的數據檢索和操作活動。

迭代解析

xml.etree的支持使開發者能夠順序處理XML文檔,而不是一次性加載整個文檔到內存中。 這對於有效管理大XML文件非常有用。

命名空間支持

xml.etree的支持使開發者能夠使用XML命名空間來識別元素和屬性的XML文檔進行工作。 它提供了解決默認XML命名空間前綴的方法,並在XML文檔中指定命名空間。

錯誤處理

xml.etree中包括了針對不正確的XML文檔和解析錯誤的錯誤處理能力。 它提供了錯誤管理和捕獲的技術,保證在使用XML數據時的可靠性和穩定性。

兼容性和可移植性

由於xml.etree是Python標準庫的組成部分,可以直接在Python程序中使用,而無需任何進一步的安裝。 它可移植且兼容多種Python設置,因為它同時支持Python 2和Python 3。

創建和配置xml.etree

創建XML文檔

通過構建表示XML樹的元素的對象並將它們附加到根元素上,可以生成一個XML文檔。 這是創建XML數據的示例:

import xml.etree.ElementTree as ET

# Create a root element 
root = ET.Element("catalog")

# Create a book element as a child of the root
book1 = ET.SubElement(root, "book")
book1.set("id", "1")

# Add child elements to the book
title1 = ET.SubElement(book1, "title")
title1.text = "Python Programming"

author1 = ET.SubElement(book1, "author")
author1.text = "John Smith"

# Create another book element
book2 = ET.SubElement(root, "book")
book2.set("id", "2")

# Add child elements to the second book
title2 = ET.SubElement(book2, "title")
title2.text = "Data Science Essentials"

author2 = ET.SubElement(book2, "author")
author2.text = "Jane Doe"

# Create an ElementTree object from the root element
tree = ET.ElementTree(root)
import xml.etree.ElementTree as ET

# Create a root element 
root = ET.Element("catalog")

# Create a book element as a child of the root
book1 = ET.SubElement(root, "book")
book1.set("id", "1")

# Add child elements to the book
title1 = ET.SubElement(book1, "title")
title1.text = "Python Programming"

author1 = ET.SubElement(book1, "author")
author1.text = "John Smith"

# Create another book element
book2 = ET.SubElement(root, "book")
book2.set("id", "2")

# Add child elements to the second book
title2 = ET.SubElement(book2, "title")
title2.text = "Data Science Essentials"

author2 = ET.SubElement(book2, "author")
author2.text = "Jane Doe"

# Create an ElementTree object from the root element
tree = ET.ElementTree(root)
PYTHON

將XML文檔寫入文件

可以使用ElementTree對象的write()函數寫入XML文件:

# Write XML document to file
tree.write("catalog.xml")
# Write XML document to file
tree.write("catalog.xml")
PYTHON

這將創建一個名為"catalog.xml"的XML文檔。

解析XML文檔

ElementTree使用parse()函數解析XML數據:

# Parse an XML document
tree = ET.parse("catalog.xml")
root = tree.getroot()
# Parse an XML document
tree = ET.parse("catalog.xml")
root = tree.getroot()
PYTHON

這將解析XML文檔"catalog.xml",產生XML樹的根元素。

訪問元素和屬性

使用Element對象提供的各種方法和屬性,可以訪問XML文檔的元素和屬性。 例如,要查看第一本書的標題:

# Access the title of the first book
first_book_title = root[0].find("title").text
print("Title of the first book:", first_book_title)
# Access the title of the first book
first_book_title = root[0].find("title").text
print("Title of the first book:", first_book_title)
PYTHON

修改XML文檔

可以通過添加、更改或刪除組件和屬性來更改XML文檔。 例如,要更改第二本書的作者:

# Modify the author of the second book
root[1].find("author").text = "Alice Smith"
# Modify the author of the second book
root[1].find("author").text = "Alice Smith"
PYTHON

序列化XML文檔

可以使用ElementTree模塊的tostring()函數將XML文檔序列化為字符串:

# Serialize XML document to string
xml_string = ET.tostring(root, encoding="unicode")
print(xml_string)
# Serialize XML document to string
xml_string = ET.tostring(root, encoding="unicode")
print(xml_string)
PYTHON

開始使用IronPDF

什麼是 IronPDF?

XML.etree Python(開發人員如何工作):圖2 - IronPDF網頁

IronPDF是一個強大的.NET庫,用於在C#、VB.NET和其他.NET語言中以編程方式創建、編輯和更改PDF文檔。 它為開發者提供了一套全面的功能,動態創建高質量的PDF,是許多應用程序的流行選擇。

IronPDF的關鍵特性

PDF生成:使用IronPDF,程序員可以創建新的PDF文檔或將現有的HTML標籤、文本、圖像和其他文件格式轉換為PDF。 此功能對於動態創建報告、發票、收據和其他文檔非常有用。

HTML到PDF轉換:IronPDF使開發者能夠簡單地將HTML文檔,包括來自JavaScript和CSS的樣式轉換為PDF文件。 這允許從網頁、動態生成的內容和HTML模板創建PDF。

PDF文檔的修改和編輯:IronPDF提供了一套全面的功能來修改和更改現有的PDF文檔。 開發者可以合併多個PDF文件,將其分成其它文檔,刪除頁面,添加書簽、註釋和水印等,根據他們的需求自定義PDF。

IronPDF和xml.etree結合

本節將演示如何基於解析的XML數據使用IronPDF生成PDF文檔。 通過發揮XML和IronPDF的長處,你可以高效地將結構化數據轉換為專業的PDF文檔。 這裡有一份詳細指南:

安裝

確保在開始之前安裝IronPDF。 可以使用pip安裝:

 pip install ironpdf

使用IronPDF生成具有解析XML的PDF文檔

IronPDF可以在數據被處理後,根據從XML中提取的數據創建PDF文檔。 讓我們創建一個PDF文檔,其中包含書名和作者的表格:

from ironpdf import *

# Create HTML content for PDF from the parsed XML elements
html_content = """
<html>
    <body>
        <h1>Books</h1>
        <table border='1'>
            <tr><th>Title</th><th>Author</th></tr>
"""
# Loop through books to add each to the table
for book in books:
    html_content += f"<tr><td>{book['title']}</td><td>{book['author']}</td></tr>"

html_content += """
        </table>
    </body>
</html>
"""

# Generate PDF document
pdf = IronPdf()
pdf.HtmlToPdf.RenderHtmlAsPdf(html_content)
pdf.SaveAs("books.pdf")
from ironpdf import *

# Create HTML content for PDF from the parsed XML elements
html_content = """
<html>
    <body>
        <h1>Books</h1>
        <table border='1'>
            <tr><th>Title</th><th>Author</th></tr>
"""
# Loop through books to add each to the table
for book in books:
    html_content += f"<tr><td>{book['title']}</td><td>{book['author']}</td></tr>"

html_content += """
        </table>
    </body>
</html>
"""

# Generate PDF document
pdf = IronPdf()
pdf.HtmlToPdf.RenderHtmlAsPdf(html_content)
pdf.SaveAs("books.pdf")
PYTHON

這段Python代碼生成一個包含書名和作者的HTML表格,該表格將由IronPDF轉換為PDF文檔。 下面是從以上代碼生成的輸出。

輸出

XML.etree Python(開發人員如何工作):圖3 - 輸出的PDF

結論

XML.etree Python(開發人員如何工作):圖4 - IronPDF許可頁面

總之,IronPDF和xml.etree Python的組合為開發者提供了堅固的解決方案,讓他們能夠解析XML數據,並根據解析的數據產生動態PDF文檔。 使用可靠且有效的Python xml.etree API,開發者可以輕鬆地從XML文檔中提取結構化數據。 IronPDF通過提供從處理過的XML數據中創建美觀並可編輯的PDF文檔的能力來增強這一功能。

一起使用xml.etree Python和IronPDF能夠讓開發者自動化數據處理任務,從XML數據源中提取寶貴的見解,並通過PDF文件以專業且視覺上吸引的方式呈現它們。 無論是生成報告、創建發票還是生成文件,xml.etree Python和IronPDF之間的協同作用解鎖了數據處理和文檔生成的新可能性。

IronPDF以合理的價格成套購買時性價比高,提供使用壽命的一次授權(e.g., $799 是一次購買多系統的授權)。 授權用戶可24/7地訪問在線技術支持。 欲了解更多費用詳情,請訪問此網站。 前往此頁面了解更多關於Iron Software產品的資訊。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。