第 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 |
saxon |
|
| 是否使用 Saxon。 |
factoryRef |
| 引用 registry 中要查找的自定义 XPathFactory | |
objectModel |
| 要使用的 XPath 对象模型 | |
logNamespaces |
|
| 是否记录在出现问题时可协助的命名空间 |
headerName |
| 用作输入的标头名称,而不是消息正文 | |
threadSafety |
|
| 是否为 xpath 表达式返回的结果启用 thread-safety。这适用于将 NODESET 用作结果类型,返回的集合具有多个元素。在这种情况下,如果您在并行处理模式中处理 NODESET (如从 Camel Splitter EIP)同时处理,则可能会出现线程安全的问题。这个选项通过执行节点强制副本来防止并发问题。如果您在应用程序中使用 camel-saxon 或 Saxon,则建议您打开这个选项。saxon 有 thread-safety 问题,这可以通过打开此选项来防止。 |
trim |
|
| 是否修剪值以移除前导和结尾的空格和换行符 |