376.14. 命名空间审核以协助调试


可从 Camel 2.10 开始

用户经常会遇到到命名空间使用大量 XPath 相关的问题。您可能会在消息中的命名空间和 XPath 表达式知道或引用命名空间之间有一些错误。由于命名空间问题无法找到 XML 元素和属性的 XPath predicates 或表达式可能只是类似"它们无法正常工作",当事实上都缺少命名空间定义。

XML 中的命名空间是完全必要的,而我们希望通过实施一些音量或 voodoo 来自动进行有线命名空间的使用,但事实上是,对路径的任何行动都将与标准不满意,并且大大阻碍了互操作性。

因此,我们可以通过向 XPath 表达式语言添加两个新功能,从而帮助您对这些问题进行调试。

#=== 记录您的 XPath 表达式/predicate 的 Namespace Context

每次在内部池中创建新的 XPath 表达式时,Camel 会将表达式的命名空间上下文记录到 org.apache.camel.builder.xml.XPathBuilder 日志记录器下。由于 Camel 以分层方式(父关系)表示命名空间上下文,因此整个树是以递归方式的输出,其格式如下:

[me: {prefix -> namespace}, {prefix -> namespace}], [parent: [me: {prefix -> namespace}, {prefix -> namespace}], [parent: [me: {prefix -> namespace}]]]
Copy to Clipboard Toggle word wrap

这些选项中的任何一个都可用于激活这个日志:

  1. org.apache.camel.builder.xml.XPathBuilder 日志记录器或一些父级日志记录器(如 org.apache.camel 或根日志记录器)上启用 TRACE 日志记录
  2. 启用 logNamespaces 选项,如 Auditing Namespaces 中所示,在这种情况下,日志将在 INFO 级别上发生。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat