|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
請參見:
描述
介面摘要 | |
---|---|
XPath | XPath 提供了對 XPath 計算環境和表達式的存取。 |
XPathExpression | XPathExpression 提供了對編譯後的 XPath 表達式的存取。 |
XPathFunction | XPathFunction 提供了對 XPath 函數的存取。 |
XPathFunctionResolver | XPathFunctionResolver 提供了對使用者定義的 XPathFunction 集的存取。 |
XPathVariableResolver | XPathVariableResolver 提供了對使用者定義的 XPath 變數集的存取。 |
類別摘要 | |
---|---|
XPathConstants | XPath 常數。 |
XPathFactory | XPathFactory 實例可用於創建 XPath 物件。 |
異常摘要 | |
---|---|
XPathException | XPathException 表示通用 XPath 異常。 |
XPathExpressionException | XPathExpressionException 表示 XPath 表達式中的錯誤。 |
XPathFactoryConfigurationException | XPathFactoryConfigurationException 表示 XPathFactory 環境中的配置錯誤。 |
XPathFunctionException | XPathFunctionException 表示 XPath 函數的錯誤。 |
此套件提供了用於 XPath 表達式的計算和存取計算環境的 object-model neutral API。
應用以下 XML 標準:
XPath 語言提供了用於從 XML 文檔選擇節點的簡單、簡潔的語法。XPath 還提供了將 XML 文檔物件模型(DOM)階層樹中的節點轉換為布林值、double 值或字元串值的規則。XPath 是 W3C 定義的語言和正式的 W3C 推薦,W3C 擁有 XML Path Language (XPath) Version 1.0 規範。
XPath 誕生於 1999 年,作為對 XSLT 和 XPointer 語言的補充,但近來已成為串流行的獨立語言,因為單個 XPath 表達式可用於替代多行 DOM API 程式碼。
XPath 表達式 由一個位置路徑 和一個或多個可選的謂詞 組成。表達式還可以包含 XPath 變數。
以下是一個簡單的 XPath 表達式的範例:
/foo/bar
此範例將選擇如下所示的 XML 文檔中的 <bar>
元素:
<foo> <bar/> </foo>
表達式 /foo/bar
是位置路徑的一個範例。雖然 XPath 位置路徑類似於 Unix-style 檔案系統路徑,但它們存在重要的區別,即 XPath 表達式返回與表達式比對的所有 節點。因此,/foo/bar
表達式將選中以下文檔中的所有三種 <bar>
元素:
<foo> <bar/> <bar/> <bar/> </foo>
特殊位置路徑操作符 //
選擇位於 XML 文檔中任何深度的節點。以下範例選擇所有 <bar>
元素,不管它們在文檔中處於什麼位置:
//bar
通配符 * 用於選擇所有元素節點。以下範例選擇 <foo>
元素的所有子元素:
/foo/*
除元素節點外,XPath 位置路徑還可用於尋找屬性節點、文本節點、註釋節點和指令處理節點。下表給出了每種節點型別的位置路徑的範例:
位置路徑 | 描述 |
/foo/bar/@id
|
選擇 <bar> 元素的屬性 id
|
/foo/bar/text()
|
選擇 <bar> 元素的文本節點。轉義和非轉義字元資料之間沒有區別。
|
/foo/bar/comment()
|
選擇 <bar> 元素中包含的所有註釋節點。
|
/foo/bar/processing-instruction()
|
選擇 <bar> 元素中包含的所有指令處理節點。
|
謂詞允許修改 XPath 位置路徑所選中的節點。謂詞的形式為 [expression]
。以下範例選擇包含值為 true
的 include
屬性的所有 <foo>
元素:
//foo[@include='true']
謂詞可互相追加以進一步修改表達式,例如:
//foo[@include='true'][@mode='bar']
以下範例演示了使用 XPath API 來選擇一個或多個來自 XML 文檔的節點:
XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/widgets/widget"; InputSource inputSource = new InputSource("widgets.xml"); NodeList nodes = (NodeList) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);
雖然 XPath 表達式選擇的是 XML 文檔的節點,但 XPath API 允許將選中的節點組合到以下其他資料型別中:
布林值
數字
字元串
用於計算表示式的方法調用中的 QName
參數指定了所需的返回型別,其中方法調用要麼是調用 XPathExpression.evalute(...)
,要麼是調用 XPath.evaluate(...)
便捷方法之一。允許的 QName 值指定為 XPathConstants
類別中的常數,它們是:
XPathConstants.NODESET
XPathConstants.NODE
XPathConstants.STRING
XPathConstants.BOOLEAN
XPathConstants.NUMBER
當請求 Boolean
返回型別時,如果選中了一個或多個節點,則返回 Boolean.TRUE
,否則返回 Boolean.FALSE
。
String
返回型別是從文本節點、註釋節點或指令處理節點檢索字元資料的便捷方法。當用於元素節點上時,返回子文本節點的值。
Number
返回型別嘗試將節點的文本組合到 double
資料型別。
XPath 位置路徑可以相對於文檔中的特殊節點,稱為 context
。考慮以下 XML 文檔:
<widgets> <widget> <manufacturer/> <dimensions/> </widget> </widgets>
可以通過以下 XPath API 程式碼選擇 <widget>
元素:
// parse the XML as a W3C Document DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = builder.parse(new File("/widgets.xml")); XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/widgets/widget"; Node widgetNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);
通過參考 <widget>
元素,現在可以編寫相對 XPath 表達式來選擇 <manufacturer>
子元素:
XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "manufacturer"; Node manufacturerNode = (Node) xpath.evaluate(expression, widgetNode, XPathConstants.NODE);
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。