跳至頁尾內容
PYTHON 幫助

用 ElementTree 解析 Python 中的 XML

XML(可擴展標記語言)是一種用於表示結構化資料的流行且靈活的格式,適合用於資料處理和文件生成。 Python的標準程式庫包含xml.etree,這個程式庫為開發者提供了一套強大的工具,用於解析或建立XML資料、操作子元素以及程式化地生成XML文件。

當與IronPDF結合使用時,開發者可以加速XML元素物件資料處理和動態PDF文件生成。 在這份深入指南中,我們將深入探討Python的xml.etree,探索其主要特性和功能,並向您展示如何將其與IronPDF整合,以解鎖資料處理的新可能性。

什麼是xml.etree?

xml.etree 是Python標準程式庫的一部分。 它具有後綴.etree,也稱為ElementTree,提供了一個簡單而有效的XML API,用於處理和修改XML文件。 它使程式設計人員能夠以層次樹狀結構方式與XML資料互動,簡化了XML文件的導航、修改和程式化生成。

儘管它輕量且易於使用,xml.etree 提供了強大的功能來處理XML根元素資料。 它提供了一種從文件、字串或類文件物件解析XML資料文件的方法。 解析後的XML文件顯示為元素物件的樹狀結構。 開發者可以在這個樹中進行導航、存取元素和屬性,並執行多種操作,如編輯、刪除或新增元素。

XML.etree Python(開發者的運作方式): 圖1 - xml.etree - 通用元素結構生成器網頁

xml.etree的特性

解析XML文件

xml.etree 提供從字串、文件或類文件物件解析XML文件的方法。 XML內容可以使用parse() 函式進行處理,這也會產生一個ElementTree物件,表示具有有效元素物件的解析XML文件。

導航XML樹

開發者可以使用xml.etree 在XML聲明樹的元素間遍歷,當文件被處理後,可以使用find(), findall(), 和 iter() 等函式。 這些方法使得根據標籤、屬性或XPath表達式存取某些元素變得簡單。

修改XML文件

在XML文件內,使用xml.etree 可提供新增、編輯和移除組件和屬性的方法。 程式化地改變XML樹的固有層次資料格式結構和內容,允許資料的修改、更新和轉換。

序列化XML文件

在修改XML文件後,xml.etree 允許序列化XML樹到字串或類文件物件中,使用如ElementTree.write() 的函式。 這使得開發者可以建立或修改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 2和Python 3,因此具有良好的可攜性並與許多Python環境相容。

建立和配置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

這將解析名為"catalog.xml"的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資料生成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價格合理,提供永久授權(例如$999 一次性購買,適用於多個系統),極具價值。 授權使用者可以24/7地存取線上技術支援。 若需進一步了解費用,請存取此網站。 請存取此頁面來了解更多關於Iron Software產品的資訊。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話