376.14. 命名空间审计以帮助调试


从 Camel 2.10 开始提供

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

XML 中的命名空间是完全必要的,虽然我们希望通过自动将一些 magic 或 voodoo 到线命名空间来简化其使用情况,但实际上,任何操作都会与标准有关,并大大阻碍了互操作性。

因此,我们可以通过向 XPath Expression Language 添加两个新功能来帮助您调试此类问题,从而从 predicates 和 表达式中存活。

#=== 日志记录 XPath 表达式/predicate 的 Namespace 上下文

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat