|
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.NODESETXPathConstants.NODEXPathConstants.STRINGXPathConstants.BOOLEANXPathConstants.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。