最後更新:2025 年 3 月 25 日

XML(可擴展標記語言) 廣泛用於存儲和傳輸資料。無論您是初學者還是有經驗的開發者,了解如何讀取和編輯 XML 文件都是必須的。在本指南中,我們將介紹基本和高級方法以高效地處理 XML 文件。
理解 XML 結構
一個 XML 文件由元素、屬性和層次結構數據組成。這裡有一個簡單的 XML 示例:
<?xml version="1.0" encoding="UTF-8"?> | |
<books> | |
<book id="1"> | |
<title>Introduction to XML</title> | |
<author>John Doe</author> | |
<price>29.99</price> | |
</book> | |
<book id="2"> | |
<title>Advanced XML Techniques</title> | |
<author>Jane Smith</author> | |
<price>39.99</price> | |
</book> | |
</books> |
讀取 XML 文件
1. 使用 Python
Python 的 xml.etree.ElementTree
模組允許輕鬆地解析 XML。
xml.etree.ElementTree
是 Python 的內置模組,這意味著您不需要單獨安裝它。它隨 Python 一起預裝,並提供方便的工具來解析、修改和創建 XML 資料。
代碼解釋
此 Python 腳本使用 xml.etree.ElementTree
來解析 XML 文件 (books.xml
)。它檢索所有 <book>
元素,提取它們的 <title>
、<author>
和 <price>
值,並將其打印出來。這樣可以輕鬆讀取結構化的 XML 資料。
import xml.etree.ElementTree as ET | |
tree = ET.parse('books.xml') | |
root = tree.getroot() | |
for book in root.findall('book'): | |
title = book.find('title').text | |
author = book.find('author').text | |
price = book.find('price').text | |
print(f"Title: {title}, Author: {author}, Price: {price}") |
2. 使用 Java
Java 提供 javax.xml.parsers
來處理 XML。
javax.xml.parsers
是 Java 的內置包,提供用於通過 DOM(文檔對象模型)和 SAX(簡單 API 用於 XML)解析器解析 XML 的類。它包含在 Java 標準庫中,因此無需安裝任何額外的東西即可使用它。
代碼解釋
此 Java 程序使用 DOM 解析器讀取和解析 XML 文件 (books.xml
)。它首先加載並規範化 XML 文檔,然後檢索所有 <book>
元素。在循環中,它提取並打印每個 <title>
標籤的文本內容。這樣可以高效地從 XML 文件中讀取書名。
import javax.xml.parsers.*; | |
import org.w3c.dom.*; | |
import java.io.*; | |
public class ReadXML { | |
public static void main(String[] args) throws Exception { | |
File inputFile = new File("books.xml"); | |
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); | |
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); | |
Document doc = dBuilder.parse(inputFile); | |
doc.getDocumentElement().normalize(); | |
NodeList nodeList = doc.getElementsByTagName("book"); | |
for (int i = 0; i < nodeList.getLength(); i++) { | |
Node node = nodeList.item(i); | |
if (node.getNodeType() == Node.ELEMENT_NODE) { | |
Element element = (Element) node; | |
System.out.println("Title: " + element.getElementsByTagName("title").item(0).getTextContent()); | |
} | |
} | |
} | |
} |
3. 使用 JavaScript(瀏覽器)
JavaScript 的 DOMParser
可以解析 XML。
JavaScript 的
DOMParser
是現代網頁瀏覽器中的一個內置功能。它允許您將 XML 字符串解析為結構化的 文檔對象模型 (DOM),使得使用 JavaScript 導航和操縱 XML 資料變得容易。
代碼解釋
該 JavaScript 代碼使用 DOMParser
解析了一個 XML 字符串 (xmlString
)。它從解析的 XML 文檔中提取 <title>
元素並將其文本內容(“XML Guide”)記錄到控制台。這對於用 JavaScript 處理 XML 資料非常有用。
let xmlString = `<?xml version="1.0"?><books><book><title>XML Guide</title></book></books>`; | |
let parser = new DOMParser(); | |
let xmlDoc = parser.parseFromString(xmlString, "text/xml"); | |
console.log(xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue); |
編輯 XML 文件
1. 使用 Python 編輯
此 Python 腳本使用 xml.etree.ElementTree
來解析和修改 XML 文件 (books.xml
)。它找到一個 id
為 "1"
的 <book>
元素並將其 <price>
值更新至 "24.99"
,然後將更改保存回文件。
import xml.etree.ElementTree as ET | |
tree = ET.parse('books.xml') | |
root = tree.getroot() | |
for book in root.findall('book'): | |
if book.get('id') == '1': | |
book.find('price').text = '24.99' | |
tree.write('books.xml') |
2. 使用 Java 編輯
這個 Java 程序使用 DOM 解析器編輯 XML 文件 (books.xml
)。它加載並規範化文檔,找到 id="1"
的 <book>
元素,更新其 <price>
值為 "24.99"
,並使用 Transformer
將更改保存回文件。
import javax.xml.parsers.*; | |
import org.w3c.dom.*; | |
import java.io.*; | |
import javax.xml.transform.*; | |
import javax.xml.transform.dom.DOMSource; | |
import javax.xml.transform.stream.StreamResult; | |
public class EditXML { | |
public static void main(String[] args) throws Exception { | |
File inputFile = new File("books.xml"); | |
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); | |
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); | |
Document doc = dBuilder.parse(inputFile); | |
doc.getDocumentElement().normalize(); | |
NodeList nodeList = doc.getElementsByTagName("book"); | |
for (int i = 0; i < nodeList.getLength(); i++) { | |
Node node = nodeList.item(i); | |
if (node.getNodeType() == Node.ELEMENT_NODE) { | |
Element element = (Element) node; | |
if (element.getAttribute("id").equals("1")) { | |
element.getElementsByTagName("price").item(0).setTextContent("24.99"); | |
} | |
} | |
} | |
TransformerFactory transformerFactory = TransformerFactory.newInstance(); | |
Transformer transformer = transformerFactory.newTransformer(); | |
DOMSource source = new DOMSource(doc); | |
StreamResult result = new StreamResult(new File("books.xml")); | |
transformer.transform(source, result); | |
} | |
} |
3. 使用 JavaScript 編輯
這段 JavaScript 代碼使用 DOMParser
解析了一個 XML 字符串,找到 id="1"
的 <book>
元素,更新其 <price>
值為 "24.99"
,然後使用 XMLSerializer
將修改後的 XML 轉回字符串。最後,記錄更新後的 XML。
let xmlString = `<?xml version="1.0"?><books><book id="1"><title>XML Guide</title><price>29.99</price></book></books>`; | |
let parser = new DOMParser(); | |
let xmlDoc = parser.parseFromString(xmlString, "text/xml"); | |
let book = xmlDoc.getElementsByTagName("book")[0]; | |
book.getElementsByTagName("price")[0].childNodes[0].nodeValue = "24.99"; | |
let serializer = new XMLSerializer(); | |
let updatedXML = serializer.serializeToString(xmlDoc); | |
console.log(updatedXML); |
結論
閱讀和編輯 XML 文件對於處理結構化資料的開發者來說至關重要。Python、Java 和 JavaScript 提供了高效處理 XML 的強大方式。嘗試這些技術,提升您的 XML 處理技能!