XML(eXtensible Markup Language,可擴展標記語言)是一種用於存儲和傳輸數據的標記語言。與 HTML 專注於顯示數據不同,XML 的設計宗旨在於數據的存儲與傳輸,其標籤可自定義,語法規範嚴格。
| 特性 | XML | HTML |
|---|---|---|
| 設計宗旨 | 存儲與傳輸數據 | 顯示數據 |
| 標籤 | 自定義 | 預定義 |
| 語法 | 嚴格 | 鬆散 |
原因: 存儲 XML 文件的實際編碼格式與文件首行聲明的 <?xml version="1.0" encoding="編碼" ?> 不一致,導致解析錯誤。
分析: 文件的實際編碼決定了字節序列,而 encoding 聲明則告訴解析器應使用何種編碼解碼。兩者不匹配即產生亂碼。
解決方法: 修正聲明中的 encoding 為文件實際編碼,或將文件另存為聲明指定的編碼格式。
關於未指定 encoding 的情況: 若省略 encoding,解析器可能按文件實際編碼打開(最理想),或按默認編碼(如 UTF-8)打開,導致不確定性。因此建議始終顯式聲明 encoding。
<!DOCTYPE students SYSTEM "student.dtd">) 和網絡 (<!DOCTYPE students PUBLIC "命名空間" "student.dtd">)詳細教程可參考:菜鳥教程 DTD
Schema 提供更強大的類型系統和命名空間支持。引入步驟:
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://www.itcast.cn/xml student.xsd"詳細教程可參考:菜鳥教程 Schema
註:Java EE 專案中 web.xml 開頭的複雜聲明即採用 Schema 約束。
// 1. 導入 dom4j-1.6.1.jar
// 2. 創建解析器
SAXReader reader = new SAXReader();
// 3. 解析 XML 獲取 Document 對象
Document document = reader.read(url);
XPath 定義了一種路徑選擇規則,常用方法:
selectSingleNode():選擇單個節點。selectNodes():選擇節點列表。使用需額外導入 jaxen-1.1-beta-6.jar,步驟同 DOM4J。