首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

XML 基礎、格式化與解析全攻略

     編輯:Java 綜合教學

XML 簡介

XML(eXtensible Markup Language,可擴展標記語言)是一種用於存儲和傳輸數據的標記語言。與 HTML 專注於顯示數據不同,XML 的設計宗旨在於數據的存儲與傳輸,其標籤可自定義,語法規範嚴格。

XML 與 HTML 比較

特性XMLHTML
設計宗旨存儲與傳輸數據顯示數據
標籤自定義預定義
語法嚴格鬆散

XML 亂碼問題分析與解決

原因: 存儲 XML 文件的實際編碼格式與文件首行聲明的 <?xml version="1.0" encoding="編碼" ?> 不一致,導致解析錯誤。

分析: 文件的實際編碼決定了字節序列,而 encoding 聲明則告訴解析器應使用何種編碼解碼。兩者不匹配即產生亂碼。

解決方法: 修正聲明中的 encoding 為文件實際編碼,或將文件另存為聲明指定的編碼格式。

關於未指定 encoding 的情況: 若省略 encoding,解析器可能按文件實際編碼打開(最理想),或按默認編碼(如 UTF-8)打開,導致不確定性。因此建議始終顯式聲明 encoding。

XML 約束:DTD 與 Schema

DTD (Document Type Definition)

  • 缺點:無法精確限制數據類型。
  • 分類:
    • 內部 DTD:直接在 XML 文件中定義。
    • 外部 DTD:引用外部 .dtd 文件,分為本地 (<!DOCTYPE students SYSTEM "student.dtd">) 和網絡 (<!DOCTYPE students PUBLIC "命名空間" "student.dtd">)

詳細教程可參考:菜鳥教程 DTD

Schema (XSD)

Schema 提供更強大的類型系統和命名空間支持。引入步驟:

  1. 編寫根標籤。
  2. 引入實例命名空間:xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  3. 指定 Schema 位置:xsi:schemaLocation="https://www.itcast.cn/xml student.xsd"
  4. 引入默認命名空間。

詳細教程可參考:菜鳥教程 Schema

註:Java EE 專案中 web.xml 開頭的複雜聲明即採用 Schema 約束。

XML 解析方式

DOM 解析

  • 原理: 一次性將整個文檔加載到內存,構建 DOM 樹(Document 對象),將各部分封裝為對象。
  • 優點: 可對樹進行增刪改查操作靈活。
  • 缺點: 佔用內存大,解析速度慢,不適合大文件。

SAX 解析

  • 原理: 逐行讀取,基於事件驅動(如 startElement、endElement)。
  • 優點: 不佔用額外內存,速度快,適合大文件。
  • 缺點: 僅能讀取,無法修改回寫。

常用解析器:DOM4J 與 XPath

DOM4J

// 1. 導入 dom4j-1.6.1.jar
// 2. 創建解析器
SAXReader reader = new SAXReader();
// 3. 解析 XML 獲取 Document 對象
Document document = reader.read(url);

XPath 查詢

XPath 定義了一種路徑選擇規則,常用方法:

  • selectSingleNode():選擇單個節點。
  • selectNodes():選擇節點列表。

使用需額外導入 jaxen-1.1-beta-6.jar,步驟同 DOM4J。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved