80.12. 将 Saxon 与 XPathBuilder 搭配使用
您需要将 camel-saxon 添加为项目的依赖项。
现在,Saxon 与 XPathBuilder 搭配使用,它可以通过多种方式完成,如下所示
- 使用自定义 XPathFactory
- 使用 ObjectModel
80.12.1. 使用系统属性设置自定义 XPathFactory
Camel 现在支持读取 JVM 系统属性 javax.xml.xpath.XPathFactory
,可用于设置要使用的自定义 XPathFactory。
这个单元测试显示了如何使用 Saxon 完成此操作:
如果 Camel 使用非默认 XPathFactory,则 Camel 将记录在 INFO
级别,例如:
XPathBuilder INFO Using system property javax.xml.xpath.XPathFactory:http://saxon.sf.net/jaxp/xpath/om with value: net.sf.saxon.xpath.XPathFactoryImpl when creating XPathFactory
要使用 Apache Xerces,您可以配置系统属性
-Djavax.xml.xpath.XPathFactory=org.apache.xpath.jaxp.XPathFactoryImpl
80.12.2. 从 XML DSL 启用 Saxon
与 Java DSL 类似,要从 XML DSL 启用 Saxon,您有三个选项:
引用自定义工厂:
<xpath factoryRef="saxonFactory" resultType="java.lang.String">current-dateTime()</xpath>
并使用工厂声明 bean:
<bean id="saxonFactory" class="net.sf.saxon.xpath.XPathFactoryImpl"/>
指定对象模型:
<xpath objectModel="http://saxon.sf.net/jaxp/xpath/om" resultType="java.lang.String">current-dateTime()</xpath>
推荐的方法是设置 saxon=true
,如下所示:
<xpath saxon="true" resultType="java.lang.String">current-dateTime()</xpath>