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


从 Camel 2.10 开始提供

用户经常面临的大量与 XPath 相关的问题与命名空间使用相关联。您消息中存在的命名空间与 XPath 表达式了解或引用的命名空间之间可能有一些不正确。XPath predicates 或表达式无法找到 XML 元素和属性,因为命名空间问题可能只是像"它们无法正常工作",实际上它并没有命名空间定义。

XML 中的命名空间是完全必要的,而我们希望通过自动实施一些魔法或 voodoo 来简化其使用情况,但事实上是,该路径关闭了标准,并会大大阻碍了互操作性。

因此,我们几乎可以通过向 XPath 表达式语言添加两个新功能来协助您调试这些问题,因此可以从 predicates 和 表达式中轻松实现。

#=== 记录您的 XPath 表达式/predicate 的命名空间上下文

每次在内部池中创建新的 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 logger 或一些父日志记录器(如 org.apache.camel 或根日志记录器)上启用 TRACE 日志记录
  2. 启用 logNamespaces 选项,如 Auditing Namespaces 所示,在这种情况下,日志记录将在 INFO 级别上发生
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat