第 375 章 XPath 语言


可作为 Camel 版本 1.1 提供

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

如果消息正文基于流,这表示它接收的输入作为流提交到 Camel。这意味着,一次只能读取流的内容 因此,通常当使用 XPath 作为 消息过滤器 或内容基于内容的路由器时,您需要多次访问数据,并且您应使用流缓存或将消息正文转换为 String,然后再安全地重新读取多次。

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

375.1. XPath 语言选项

XPath 语言支持 9 选项,这些选项如下。

Name默认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 具有线程安全问题,可通过打开这个选项来阻止。

trim

true

布尔值

是否修剪值是否删除前导(尾随空格和换行符)

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.