教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Java培訓(xùn)之XPath知識(shí)點(diǎn)詳解

更新時(shí)間:2016年06月27日16時(shí)29分 來(lái)源:傳智播客java培訓(xùn)學(xué)院 瀏覽次數(shù):

1 什么是XPath
XPath即為XML路徑語(yǔ)言(XML Path Language),它是一種用來(lái)確定XML文檔中某部分位置的語(yǔ)言。XPath基于XML的樹(shù)狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹(shù)中找尋節(jié)點(diǎn)的能力。起初 XPath 的提出的初衷是將其作為一個(gè)通用的、介于XPointer與XSL間的語(yǔ)法模型。但是 XPath 很快的被開(kāi)發(fā)者采用來(lái)當(dāng)作小型查詢語(yǔ)言。
 

2 DOM4J對(duì)XPath的支持
在DOM4J中,Node接口中的三個(gè)方法最為常用: 
  • List selectNodes(String xpathExpression):在當(dāng)前節(jié)點(diǎn)中查找滿足XPath表達(dá)式的所有子節(jié)點(diǎn);
  • Node selectSingleNode(String xpathExpression):在當(dāng)前節(jié)點(diǎn)中查找滿足XPath表達(dá)式的第一個(gè)子節(jié)點(diǎn);
  • String valueOf(String xpathExpression):在當(dāng)前節(jié)點(diǎn)中查找滿足XPath表達(dá)式的第一個(gè)子節(jié)點(diǎn)的文本內(nèi)容;
 

XPath語(yǔ)法

 
1 選擇節(jié)點(diǎn)
  • / :表示文檔;
  • /AAA:文檔下的AAA節(jié)點(diǎn);
  • /AAA/BBB:文檔下的AAA節(jié)點(diǎn)下的BBB節(jié)點(diǎn);
  • /*/BBB:文檔下的任意節(jié)點(diǎn)下的BBB節(jié)點(diǎn);
  • /AAA/*:文檔下的AAA節(jié)點(diǎn)下的任意節(jié)點(diǎn);
  • .:表示當(dāng)前節(jié)點(diǎn);
  • ./AAA:當(dāng)前節(jié)點(diǎn)下的AAA節(jié)點(diǎn);
  • ./AAA/*:當(dāng)前節(jié)點(diǎn)下的AAA節(jié)點(diǎn)下的任意節(jié)點(diǎn);
  • ..: 表示當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn);
  • ../*:當(dāng)前節(jié)點(diǎn)父節(jié)點(diǎn)下的所有節(jié)點(diǎn),也就是當(dāng)前節(jié)點(diǎn)的所有兄弟節(jié)點(diǎn)及自己本身;
  • //:表示從當(dāng)前節(jié)點(diǎn)位置算起,不受位置限制選擇;
  • //AAA:文檔中所有AAA節(jié)點(diǎn);
  • .//AAA:當(dāng)前節(jié)點(diǎn)下所有AAA節(jié)點(diǎn),包含當(dāng)前節(jié)點(diǎn)子孫中的AAA節(jié)點(diǎn);
  • @:選擇屬性節(jié)點(diǎn);
  • //@number:文檔中所有number屬性;
  • //@*:文檔中所有屬性;
  • /AAA/BBB/@*:AAA下的BBB的所有屬性;
 
2 多路徑選擇節(jié)點(diǎn)
  • |:把多個(gè)路徑用“|”連接,即選擇多個(gè)路徑;
  • /AAA/BBB | /AAA/CCC/BBB:AAA下的BBB,以及AAA下的CCC下的BBB;
 
3 謂語(yǔ)
就是條件,需要使用中括號(hào)括起來(lái)。
  • //[@*]:所有有屬性的節(jié)點(diǎn),注意選擇的不是屬性,而是有屬性的節(jié)點(diǎn),謂語(yǔ)只是一個(gè)條件;
  • //AAA[@number]:所有有number屬性的AAA節(jié)點(diǎn);
  • /AAA/BBB[@number=’1001’]:AAA元素下的number屬性為1001的BBB元素;
  • /AAA/BBB[@number!=’1001’]:AAA 元素下的包含number屬性,但屬性值不為1001的BBB元素;
 
4 多謂語(yǔ)
就是多個(gè)條件,使用or、and連接多個(gè)條件。
  • or:或者;
  • //[@number or @friend]:所有包含number或者friend屬性的元素;
  • //[@number=’1001’ or @friend=’1001’]:所有number為1001或者friend為1001的元素;
  • and:并且;
  • //[@number or @friend]:所有包含number和friend屬性的元素;
 
5 運(yùn)算符
  • |:已經(jīng)介紹過(guò)了;
  • +:加法運(yùn)算符;
  • -:減法運(yùn)算符;
  • *:乘法運(yùn)算符;
  • div:除法運(yùn)算符;
  • =:等于運(yùn)算符,等同于Java中的“==”;
  • !=:不等于運(yùn)算符;
  • >=:大于等于;
  • >:大于;
  • <=:小于毛球;
  • <:小于;
  • or:或者,已經(jīng)介紹過(guò)了;
  • and:并且,已經(jīng)介紹了;
  • mod:模運(yùn)算符,等同于Java中的“%”。

本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://xamj520.com/javaee
0 分享到:
和我們?cè)诰€交談!