第 376 章 XPath 语言


从 Camel 版本 1.1 开始提供

Camel 支持 XPath 允许在 DSL 或 Xml Configuration 中使用 Expression 或 Predicate。例如,您可以使用 XPath 在 Message Filter 中创建 Predicate,或作为 Recipient List 的 Expression。

如果消息正文基于流,这表示它收到的输入作为流提交给 Camel。这意味着您只能够读取一次流的内容。因此,当您将 XPath 用作 Message Filter 或 Content Based Router 时,您需要多次访问数据,您应该使用流缓存或将消息正文转换为 字符串,之前可以安全地重新读取多次。

from("queue:foo").
  filter().xpath("//foo")).
  to("queue:bar")
from("queue:foo").
  choice().xpath("//foo")).to("queue:bar").
  otherwise().to("queue:others");

376.1. XPath Language 选项

XPath 语言支持 9 个选项,如下所列。

名称默认值Java 类型描述

documentType

 

字符串

文档类型的类名称是 org.w3c.dom.Document

resultType

NODESET

字符串

设置结果类型的类名称(输出中的类型)默认结果类型是 NodeSet

saxon

false

布尔值

是否使用 Saxon。

factoryRef

 

字符串

引用 registry 中要查找的自定义 XPathFactory

objectModel

 

字符串

要使用的 XPath 对象模型

logNamespaces

false

布尔值

是否记录在出现问题时可协助的命名空间

headerName

 

字符串

用作输入的标头名称,而不是消息正文

threadSafety

false

布尔值

是否为 xpath 表达式返回的结果启用 thread-safety。这适用于将 NODESET 用作结果类型,返回的集合具有多个元素。在这种情况下,如果您在并行处理模式中处理 NODESET (如从 Camel Splitter EIP)同时处理,则可能会出现线程安全的问题。这个选项通过执行节点强制副本来防止并发问题。如果您在应用程序中使用 camel-saxon 或 Saxon,则建议您打开这个选项。saxon 有 thread-safety 问题,这可以通过打开此选项来防止。

trim

true

布尔值

是否修剪值以移除前导和结尾的空格和换行符

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.