你們好,樂字節小樂又來了,上次給你們說道的是XML解析,此次接着講述XML文檔中的語言:XPATH、DTDnode
XPath 是一門在 XML 文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進行遍歷。XPath 是 W3C XSLT 標準的主要元素,而且 XQuery 和 XPointer 同時被構建於 XPath 表達之上。所以,對 XPath 的理解是不少高級 XML 應用的基礎。XPath 很是相似對數據庫操做的 SQL 語言,或者說 JQuery,它能夠方便開發者抓起文檔中須要的東西。(dom4j 也支持 xpath)數據庫
XPath 中有七種結點類型:元素、屬性、文本、命名空間、處理指令、註釋以及文檔節點 (或稱爲根節點)。dom
文檔中存在元素節點,屬性節點,根節點spa
表達式 描述code
節點名稱(nodename) 選取此節點的全部子節點xml
/ 從根節點選取blog
// 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置圖片
. 選取當前節點開發
.. 選取當前節點的父節點文檔
@ 選取屬性
示例以下:
//@lang 選取全部名爲 lang 的屬性
用來查找某個特定的節點或者包含某個指定的值的節點。以方括號括起
//book[price>35.00] 選擇全部 book 元素,且其中的 price 元素的值須大於 35.00
/bookstore/book[1] 選取屬於 bookstore 子元素的第一個 book 元素。
/bookstore/book[last()] 選取屬於 bookstore 子元素的最後一個 book 元素。
/bookstore/book[last()-1] 選取屬於 bookstore 子元素的倒數第二個 book 元素。
/bookstore/book[position()<3] 選取最前面的兩個屬於 bookstore 元素的子元素的 book 元素。
//title[@lang] 選取全部擁有名爲 lang 的屬性的 title 元素。
//title[@lang='eng'] 選取全部 title 元素,且這些元素擁有值爲 eng 的 lang 屬性。
/bookstore/book[price>35.00] 選取全部 bookstore 元素的 book 元素,且其中的 price
元素的值須大於 35.00。
/bookstore/book[price>35.00]/title 選取全部 bookstore 元素中的 book 元素的 title 元
素,且其中的 price 元素的值須大於 35.00。
通配符 描述
@* 匹配任何屬性節點
node() 匹配任何類型的節點
| 選取若干路徑
使用示例
路徑表達式 結果
/bookstore/* 選取 bookstore 元素的全部子節點
//* 選取文檔中的全部元素
//title[@*] 選取全部帶有屬性的 title 元素。
//book/title | //book/price 選取全部 book 元素的 tilte 和 price 元素。
//title | //price 選取全部文檔中的 title 和 price 元素。
/bookstore/book/title | //price 選取全部屬於 bookstore 元素的 book 元素的 title 元素,以及文檔中全部的 price 元素
使用 DTD 能夠對文檔的內容進行約束,XML 中的 DTD 數據必須用<!DOCTYPE>標記說
明,語法格式以下:
<!DOCTYPE 根元素名稱[DTD 定義數據]>
XML 的元素內容定義格式以下:
<!ELEMENT 元素內容描述字符串>
DTD 還能夠描述子元素的結構,其使用語法:
<!ELEMENT 子元素結構名稱 子元素結構表達式>
其中子元素結構有如下幾種經常使用的定義方式:
1.按順序包括 B、C、D、的全部內容: <!ELEMENT A(B,C,D)>
2.在 A 中要包含 B、C、D、的任意一個的內容: <!ELEMENT A(B|C|D)>
3.在 A 中包含 0-1 個 B: <!ELEMENT A(B?)>
4.在 A 中要包含 1 次以上各 B: <!ELEMENT A(B+)>
5.在 A 中要包含 O 次以上各 B: <!ELEMENT A(B*)>
6.空元素 <!ELEMENT A EMPTY>
如:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE persons[ <!ELEMENT persons (person+)> <!ELEMENT person ( name , password? , age+) > <!ATTLIST person sex (男|女) #REQUIRED> <!ATTLIST person id ID #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT password (#PCDATA)> <!ELEMENT age (#PCDATA)> > <persons> <person sex="男" id="p1"> <name></name> <password></password> <age></age> </person> <person sex="女" id="p2"> <name></name> <password></password> <age></age> </person> </persons>
關於XML技術先就講到這裏了,更多Java技術乾貨請多關注樂字節,後續繼續奉獻!