1. 程式人生 > 實用技巧 >java 中的xml操作

java 中的xml操作

XML

全稱為Extensible Markup Language 可擴充套件標記語言。一般作為配置檔案,可在網路中傳輸。

和html的區別是,它的語法規定更加嚴格,同時,xml中的標籤都是自定義的,而html中的標籤是預定義的。

xml一般用來儲存資料,而html一般用來展示資料。

xml文件的第一行必須為形如<?xml 屬性列表 ?>的文件宣告。必須要有一個根標籤,標籤必須正確關閉。同時和html不同xml的標籤區分大小寫。屬性值必須使用單雙引號包裹。

<?xml version="1.0" encoding="utf-8" standalone="no" ?>

一般xml文件宣告格式如上,但是standalone一般不寫,該屬性的含義是是否依賴其他檔案,取值只有yes/no。version屬性表示採取的xml版本,常用的是1.0版本,encoding表示此文件內容採用的編碼格式。

當需要原樣展示資料時,可以將內容放到CDATA區中。

約束

約束定義了xml的書寫規則。

通常有兩種定義約束的方式:

  1. DTD 該方式使用較為簡單
  2. Schema 該方式使用較為複雜,當約束更加詳細

使用DTD約束有兩種方式,一種時將約束規則定義在xml文件中。

另外一種時將DTD規則定義在外部的DTD檔案中。

  1. 使用本地DTD規則 <!DOCTYPE 根標籤名 SYSTEM "dtd檔案位置">

  2. 使用網路DTD規則 <!DOCTYPE 根標籤名 PUBLIC "dtd檔名" "dtd檔案URL">

操作xml文件

操作xml文件,有兩種行為:

  1. 解析 也就是將xml資料讀入到記憶體

  2. 寫入 也就是修改xml資料

xml解析方式

xml文件有兩種解析方式:

  1. DOM 方式 將標記語言一次性載入新記憶體,在記憶體中形成一顆DOM樹

    ​ 優點:操作方便,可以對文件進行crud的所有操作

    ​ 缺點:消耗記憶體

  2. SAX 逐行讀取,基於事件驅動

    ​ 優點:記憶體消耗小

    ​ 缺點:只能讀取,不能增刪改

xml常見解析器

xml常見解析器有如下幾種:

  1. JAXP:SUN公司提供的解析器,支援dom和sax兩種實現 劣質

  2. DOM4J:

  3. jsoup:HTML解析器,解析xml無問題 推薦

  4. PULL:Android系統內建解析器,sax方式

Jsoup

本來是用來解析html文件的解析器,但是同為標記語言,解析xml也沒有問題。

使用parse靜態方法解析xml文件,返回一個Document物件。

Document物件

Document 文件物件,代表記憶體中的dom樹 繼承自Element。

Elements 物件

繼承自ArrayList<Element> 類,相當於Element物件的容器。通常在選擇某些節點是返回該物件。

Element 物件

該物件相當於一個標籤節點。是一個較為基礎的物件,Document類同樣繼承自該類。

常用函式函式有:

​ getElementsByTag 根據標籤名稱返回Elements

​ getElementsByAttribute 根據屬性名稱獲取元素物件

​ getElementsByAttributeValue 根據屬性值獲取元素物件

​ attr 獲取屬性值

​ text 獲取標籤內的文字內容(包含子標籤內的文字內容)

​ html 獲取html/xml內容

Node物件

Node物件,為Element的基類

快捷選擇方式

select CSS選擇器方式

XPath xml路徑語言,用於在xml中查詢資訊。

使用jsoupXpath需要額外的jar包