参照: 説明
| インタフェース | 説明 | 
|---|---|
| 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式の評価と評価環境へのアクセスに使用する、オブジェクト・モデルに依存しない APIを提供します。
次のXML標準が適用されます。
XPath言語は、XMLドキュメントからノードを選択するための単純で簡潔な構文を提供します。また、XMLドキュメント・オブジェクト・モデル(DOM)ツリーのノードをboolean、doubleまたはstring値に変換するための規則も提供します。XPathはW3Cによって定義された言語であり、公式のW3C勧告です。W3CはXML Path Language (XPath) Version 1.0仕様をホストしています。
XPathは1999年にXSLTおよびXPointer言語の補足として誕生しましたが、最近では独立した言語として、また多くのDOM APIコードの代わりに使用できる単一のXPath式として普及してきました。
XPath 式は、1つのロケーション・パス、および1つまたは複数のオプションのプレディケートで構成されます。式にはXPath変数が含まれる場合もあります。
簡単なXPath式の例を次に示します。
/foo/bar
この例は、次のようなXMLドキュメントの<bar>要素を選択します。
<foo> <bar/> </foo>
式/foo/barは、ロケーション・パスの例です。XPathのロケーション・パスはUnixスタイルのファイル・システム・パスに似ていますが、XPath式では式にマッチするすべてのノードを返すという点が重要な相違です。したがって、/foo/bar式によって次のドキュメントの3つすべての<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ドキュメントから1つまたは複数のノードを選択する場合の例を次に示します。
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は選択されたノードを次に示すほかのデータ型のいずれかに合体させることができます。
BooleanNumberString望ましい戻り値の型は、式を評価するために使われたメソッド呼出しのQNameパラメータで指定されています。これは、XPathExpression.evalute(...)の呼出しか、XPath.evaluate(...)簡易メソッドのいずれかになります。許可されるQName値は、次のようにXPathConstantsクラスの定数として指定されています。
XPathConstants.NODESETXPathConstants.NODEXPathConstants.STRINGXPathConstants.BOOLEANXPathConstants.NUMBERBoolean型戻り値が要求されると、1つまたは複数のノードが選択されている場合は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);
 バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
 Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.