375.15. 名前空間の監査
Camel は、XPath 式を評価する前に、すべての受信メッセージに存在する全名前空間を検出してダンプすることができ、可能性のある名前空間の問題を分析して特定するために必要な豊富な情報をすべて提供します。
これを実現するために、別の特別に調整された 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]}