用 ElementTree 解析 Python 中的 XML
XML(可擴展標記語言)是一種流行且靈活的格式,用於在資料處理和文件生成中表示結構化資料。 Python 的標準函式庫包括 xml.etree,該函式庫為開發人員提供了一套強大的工具,用於解析或建立 XML 資料、操作子元素以及以程式方式產生 XML 文件。
結合IronPDF(一個用於建立和編輯 PDF 文件的.NET庫),開發人員可以加快 XML 元素物件資料處理和動態 PDF 文件產生速度。 在本深入指南中,我們將深入研究 Python 的 xml.etree,探索其主要特性和功能,並向您展示如何將其與IronPDF集成,從而解鎖資料處理的新可能性。
什麼是 xml.etree?
xml.etree是 Python 標準函式庫的一部份。 它帶有後綴.etree ,也稱為 ElementTree,它提供了一個簡單有效的 XML API,用於處理和修改 XML 文件。 它使程式設計師能夠以分層樹狀結構與 XML 資料進行交互,從而簡化 XML 檔案的導航、修改和程式化生成。
雖然它輕巧且易於使用,但 xml.etree 提供了處理 XML 根元素資料的強大功能。 它提供了一種從文件、字串或類別文件物件解析 XML 資料文檔的方法。 解析後的 XML 檔案以 Element 物件樹的形式顯示。 開發者可以瀏覽此樹狀結構,存取元素和屬性,並執行各種操作,例如編輯、刪除或新增元素。

xml.etree 的特性
解析 XML 文檔
xml.etree 中提供了從字串、檔案或類似檔案的物件解析 XML 文件的方法。 可以使用 parse() 函數處理 XML 材料,該函數還會產生一個 ElementTree 對象,該對象表示已解析的 XML 文檔,其中包含有效的元素對象。
導航 XML 樹
開發人員可以使用 xml.etree 來遍歷 XML 宣告樹的元素,並在文件處理完成後使用 findall() 和 iter()、等函數。 透過這些方法,可以根據標籤、屬性或 XPath 表達式輕鬆存取某些元素。
修改 XML 文檔
在 XML 文件中,可以使用 xml.etree 來新增、編輯和刪除元件和屬性。 透過程式設計方式改變 XML 樹固有的層次化資料格式結構和內容,可以實現資料修改、更新和轉換。
XML文檔序列化
xml.etree 允許在修改 XML 文件後,使用 ElementTree.write() 等函數將 XML 樹序列化為字串或類似檔案的物件。 這使得開發人員能夠建立或修改 XML 樹,並從中產生 XML 輸出。
XPath 支援
xml.etree 提供了對 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)將 XML 文件寫入文件
ElementTree 物件的 write() 函數可用來寫入 XML 檔案:
# Write XML document to file
tree.write("catalog.xml")# Write XML document to file
tree.write("catalog.xml")這將在名為"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()這將解析 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)修改 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"序列化 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)IronPDF入門指南
IronPDF是什麼?

IronPDF是一個功能強大的.NET庫,用於以程式設計方式使用 C#、 .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 合併
本節將示範如何使用IronPDF根據解析後的 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 程式碼會產生一個包含書名和作者的 HTML 表格,然後IronPDF將其轉換為 PDF 文件。 以下是上述程式碼產生的輸出結果。
輸出

結論

總而言之, IronPDF和 Python 的結合為希望解析 XML 資料並根據解析後的資料產生動態 PDF 文件的開發人員提供了一個強大的解決方案。 借助可靠且高效的 Python API,開發人員可以輕鬆地從 XML 文件中提取結構化資料。 IronPDF透過提供從處理後的 XML 資料創建美觀且可編輯的 PDF 文件的功能,增強了這項功能。
xml.etree Python 和IronPDF攜手合作,使開發人員能夠自動化資料處理任務,從 XML 資料來源中提取有價值的見解,並透過 PDF 文件以專業且引人入勝的方式呈現這些見解。 無論是產生報告、建立發票或產生文檔,xml.etree Python 和IronPDF之間的協同作用,都為資料處理和文件產生開啟了新的可能性。
IronPDF捆綁購買價格合理,終身許可證物超所值(例如,$799 一次性購買即可在多個系統中使用)。 授權的使用者可享有全天候線上技術支援。 有關費用的更多詳情,請訪問此網站。 請造訪此頁面以了解更多關於Iron Software產品的資訊。










