32.4. XPath ビルダー
概要
org.apache.camel.builder.xml.XPathBuilder
クラスを使用すると、エクスチェンジとは独立して XPath 式を評価することができます。つまり、任意のソースからの XML フラグメントがあれば、XPathBuilder
を使用して XML フラグメントの XPath 式を評価することができます。
式のマッチング
matches()
メソッドを使用して、指定された XPath 式に一致する XML ノードが 1 つ以上見つかるかどうかをチェックします。XPathBuilder
を使用した XPath 式のマッチングの基本的な構文は以下のとおりです。
boolean matches = XPathBuilder .xpath("Expression") .matches(CamelContext, "XMLString");
ここで、指定された式である Expression が XML フラグメントである XMLString に対して評価され、式に一致するノードが少なくとも 1 つ見つかった場合に結果は true になります。たとえば、以下の例では XPath 式が xyz
属性に一致するものを見つけたため、true
が返されます。
boolean matches = XPathBuilder .xpath("/foo/bar/@xyz") .matches(getContext(), "<foo><bar xyz='cheese'/></foo>"));
式の評価
evaluate()
メソッドを使用して、指定された XPath 式と一致する最初のノードの内容を返します。XPathBuilder
を使用して XPath 式を評価するための基本的な構文は以下のとおりです。
String nodeValue = XPathBuilder .xpath("Expression") .evaluate(CamelContext, "XMLString");
また、evaluate()
に第 2 引数として必要な型を渡すことで、結果の型を指定することもできます。
String name = XPathBuilder .xpath("foo/bar") .evaluate(context, "<foo><bar>cheese</bar></foo>", String.class); Integer number = XPathBuilder .xpath("foo/bar") .evaluate(context, "<foo><bar>123</bar></foo>", Integer.class); Boolean bool = XPathBuilder .xpath("foo/bar") .evaluate(context, "<foo><bar>true</bar></foo>", Boolean.class);