80.12. 使用带有 XPathBuilder 的 Saxon


您需要添加 camel-saxon 作为项目的依赖项。

现在,更易于将 Saxon 与 XPathBuilder 搭配使用,该Builder 可以通过几种方式完成,如下所示

  • 使用自定义 XPathFactory
  • 使用 ObjectModel

80.12.1. 使用系统属性设置自定义 XPathFactory

Camel 现在支持读取 JVM 系统属性 javax.xml.xpath.XPathFactory,可用于设置要使用的自定义 XPathFactory。

这个单元测试演示了如何进行此操作来使用 Saxon:

如果使用非默认 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
Copy to Clipboard Toggle word wrap

要使用 Apache Xerces,您可以配置系统属性

-Djavax.xml.xpath.XPathFactory=org.apache.xpath.jaxp.XPathFactoryImpl
Copy to Clipboard Toggle word wrap

80.12.2. 从 XML DSL 中启用 Saxon

与 Java DSL 类似,若要从 XML DSL 启用 Saxon,您有三个选项:

引用自定义工厂:

<xpath factoryRef="saxonFactory" resultType="java.lang.String">current-dateTime()</xpath>
Copy to Clipboard Toggle word wrap

并使用工厂声明 bean:

<bean id="saxonFactory" class="net.sf.saxon.xpath.XPathFactoryImpl"/>
Copy to Clipboard Toggle word wrap

指定对象模型:

<xpath objectModel="http://saxon.sf.net/jaxp/xpath/om" resultType="java.lang.String">current-dateTime()</xpath>
Copy to Clipboard Toggle word wrap

推荐的方法是设置 saxon=true,如下所示:

<xpath saxon="true" resultType="java.lang.String">current-dateTime()</xpath>
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat