376.15. 审计命名空间


在评估 XPath 表达式前,Camel 能够发现和转储每个传入消息上存在的所有命名空间,从而为您提供有助于您分析和固定命名空间问题所需的所有丰富的信息。

要达到此目的,它在内部使用另一个特殊定制的 XPath 表达式来提取消息中显示的所有命名空间映射,显示每个单个映射的前缀和完整的命名空间 URI。

需要考虑的一些点:

  • 隐式 XML 命名空间(xmlns:xml="http://www.w3.org/XML/1998/namespace")被禁止在输出中,因为它没有添加值
  • 默认命名空间在输出中的 DEFAULT 关键字下列出
  • 请记住,可以将命名空间重新映射到不同的范围下。认为顶级 'a' 前缀可以分配不同的命名空间,或者默认命名空间在内部范围内更改。对于每个发现的前缀,会列出所有关联的 URI。

您可以在 Java DSL 和 Spring DSL 中启用这个选项。

Java DSL:

XPathBuilder.xpath("/foo:person/@id", String.class).logNamespaces()

Spring DSL:

<xpath logNamespaces="true" resultType="String">/foo:person/@id</xpath>

审计的结果将显示在 org.apache.camel.builder.xml.XPathBuilder 日志记录器下的 INFO 级别,如下所示:

2012-01-16 13:23:45,878 [stSaxonWithFlag] INFO  XPathBuilder  - Namespaces discovered in message:
{xmlns:a=[http://apache.org/camel], DEFAULT=[http://apache.org/default],
xmlns:b=[http://apache.org/camelA, http://apache.org/camelB]}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.