90.13. デバッグを支援する名前空間の監査


ユーザーが頻繁に直面するXPath 関連の問題の多くは、名前空間の使用に関連しまs.メッセージに存在する名前空間と、XPath 式が認識または参照している名前空間との間に、多少のずれがある場合があります。XPath の述語または式において、名前空間の問題が原因で XML 要素と属性を見つけることができない場合は、実際には名前空間の定義が不足しているだけにも関わらず、機能していない ように見える場合があります。

XML の名前空間は必ず必要で、ある操作を実装して名前空間を自動的に接続することで使用方法を簡素化することができるといいのですが、実際は、このような道筋をたどったアクションは、標準に反してしまい、相互運用性が確保しにくくなります。

したがって、XPath 式言語に 2 つの新機能を追加して、述語と式の両方からアクセスできるようして、このような問題のデバッグを支援することがこちらで最大限提供できる内容です。

90.13.1. XPath 式/述語の名前空間コンテキストのログ記録

内部プールで新しい XPath 式が作成されるたびに、Camel は式の名前空間コンテキストを org.apache.camel.language.xpath.XPathBuilder ロガーに記録します。Camel は Namespace Context を階層的な方法 (親子関係) で表すため、ツリー全体が次の形式で再帰的に出力されます。

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

これらのオプションのいずれかを使用して、このログを有効にできます。

  • org.apache.camel.language.xpath.XPathBuilder ロガー、または org.apache.camel やルートロガーなどの親ロガーで TRACE ロギングを有効にします。
  • 次のセクションで示すように、logNamespaces オプションを有効にします。この場合、ログは INFO レベルで行われます。

90.13.2. 名前空間の監査

Camel は、XPath 式を評価する前に、すべての受信メッセージに存在する全名前空間を検出してダンプすることができ、可能性のある名前空間の問題を分析して特定するために必要な豊富な情報をすべて提供します。

これを実現するために、別の特別に調整された XPath 式を内部的に使用して、メッセージに表示されるすべての名前空間マッピングを抽出し、個々のマッピングごとに接頭辞と完全な名前空間 URI を表示します。

考慮すべき点:

  • 暗黙的な XML 名前空間 (xmlns:xml="http://www.w3.org/XML/1998/namespace") は値を追加しないため、出力から除外されます。
  • デフォルトの名前空間は、出力の DEFAULT キーワードの下に一覧表示されます
  • 名前空間は異なるスコープで再マッピングできることに注意してください。最上位の a 接頭辞を考えてみてください。これは、内部要素で別の名前空間または内部スコープで変わるデフォルトの名前空間を割り当てることができます。検出された接頭辞ごとに、関連付けられているすべての URI が一覧表示されます。

このオプションは、Java DSL および XML DSL で有効にできます。

Java DSL の場合

XPathBuilder.xpath("/foo:person/@id", String.class).logNamespaces()
Copy to Clipboard Toggle word wrap

XML DSL の場合

<xpath logNamespaces="true" resultType="String">/foo:person/@id</xpath>
Copy to Clipboard Toggle word wrap

監査の結果は、org.apache.camel.language.xpath.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]}
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat