1.1 XML簡介
典型的XML文檔是由XML文檔首部和XML文檔主體構(gòu)成的。
XML文檔首部:聲明包含<? ?>標簽之中。例如:
<?xml version="1.0" encoding="UTF-8" ?>
XML文檔主體,文檔中的數(shù)據(jù)是通過樹形結(jié)構(gòu)進行組織的,一個標簽引出一個元素節(jié)點,元素開始標簽中可以指定屬性節(jié)點,也可以包含子元素和文本內(nèi)容,也可以什么也沒有而成為一個空元素。
1、一個格式正確的XML文檔必須由一個且僅由一個頂節(jié)元素組成。將沒有根元素的XML文檔稱為XML片段。
2、正確處理特殊字符。使用CDATA段:
<?xml versoin="1.0" encoding="UTF-8" ?>
<root>
<compare><![CDATA[ %$#<> ]]></compare>
</root>
1.2 Xpath語言
Xpath將xml的文檔結(jié)構(gòu)視為一個樹形結(jié)構(gòu),元素、屬性、文本、注釋以及處理指令都是這個樹形結(jié)構(gòu)上的節(jié)點,對于xml文檔中元素、屬性、文本、注釋以及處理指令的訪問實際上是按順序遍歷這棵樹,使用Xpath的路徑表示法,可以定位到XML文檔中的一個節(jié)點或者節(jié)點集合。
在Xpath中,可以使用相關(guān)標識來定位元素以及其屬性,這些標識符關(guān)鍵字主要有:child、self、parent、descendant、attribute等。
child為默認標識符,self表示當前節(jié)點,parent表示上一級節(jié)點。
descendant表示當前子孫節(jié)點,attribute表示當前節(jié)點的屬性。
絕對路徑的Xpath表示
絕對路徑是從根節(jié)點到目標節(jié)點所經(jīng)歷的路徑。
1、元素節(jié)點的訪問:
/child::Config/child::Department
可以簡化:
/Config/Department
2、屬性節(jié)點的訪問
/child::Config/child::Department/attribute::id
可以簡化:
/Config/Department/@id
3、文本節(jié)點訪問
可以直接使用“//”來表示,例如“.//”表示當前路徑下的文本內(nèi)容。
4、子孫節(jié)點的訪問
可以通過元素節(jié)點,但是離根元素太長,可以使用子孫節(jié)點表示:
/child::class/descendant::Name
可以簡化:
/class//Name
5、任意節(jié)點的訪問
/child::Config/child::Department/child::*
可以簡寫:
/Config/Department/*
相對路徑的Xpath表示:
parent::Director/@id 簡寫 ../@id
self::Director/Name 簡寫 ./Name
1.3 Xpath的元素定位條件
在xml中,也可以根據(jù)篩選條件返回指定節(jié)點集
1、根據(jù)屬性值篩選節(jié)點集
可以使用下面的表示來定位class元素下所有的Director子元素:
/class/Director
但是需要定位具有屬性id的Director時:
/class/Director[@id]
當需要具體確定屬性數(shù)值時:
/class/Director[@id='1001']
2、根據(jù)或表達式篩選節(jié)點集
當需要對多個具有不同名稱節(jié)點進行處理,可以使用|表達式,例如需要定位Director下的Name或者Age,二者任意一個度可以:
/class/Director/Name|Age