32.4. XPath Builder

概述

org.apache.camel.builder.xml.XPathBuilder 类允许您独立评估 XPath 表达式。也就是说,如果您拥有来自任何源的 XML 片段,您可以使用 XPathBuilder 来评估 XML 片段中的 XPath 表达式。

匹配表达式

使用 matches() 方法检查一个或多个 XML 节点是否可以找到与给定 XPath 表达式匹配的 XML 节点。使用 XPathBuilder 匹配 XPath 表达式的基本语法如下:

boolean matches = XPathBuilder
                    .xpath("Expression")
                    .matches(CamelContext, "XMLString");

如果至少有一个节点与表达式匹配,则给定表达式、表达式 会根据 XML 片段、XMLString 和结果为 true 进行评估。例如,以下示例返回 true,因为 XPath 表达式在 xyz 属性中找到匹配项。

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");

您也可以通过传递所需的类型作为第二个参数来指定结果类型,以评估() targetNamespaces-InventoryServicefor 示例:

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);