検索

32.3. XPath の注入

download PDF

パラメーターバインディングアノテーション

Apache Camel Bean インテグレーションを使用して Java Bean 上でメソッドを呼び出す場合、@XPath アノテーションを使用して、エクスチェンジから値を抽出してメソッドパラメーターにバインドすることができます。

たとえば、AccountService オブジェクトで credit メソッドを呼び出す以下のルートのフラグメントについて考えてみましょう。

from("queue:payments")
    .beanRef("accountService","credit")
    ...

credit メソッドは、パラメーターバインディングアノテーションを使用してメッセージボディーから関連データを抽出し、以下のようにパラメーターに挿入します。

public class AccountService {
    ...
    public void credit(
            @XPath("/transaction/transfer/receiver/text()") String name,
            @XPath("/transaction/transfer/amount/text()") String amount
            )
    {
        ...
    }
    ...
}

詳細については、カスタマポータルのApache Camel 開発者ガイドBean インテグレーションを参照してください。

Namespaces

表32.1「@XPath の定義済み名前空間」 は、XPath に対して定義済みの名前空間を示します。これらの名前空間接頭辞は、@XPath アノテーションに表示される XPath 式で使用できます。

表32.1 @XPath の定義済み名前空間
名前空間 URI接頭辞

http://www.w3.org/2001/XMLSchema

xsd

http://www.w3.org/2003/05/soap-envelope

soap

カスタム名前空間

@NamespacePrefix アノテーションを使用して、カスタム XML 名前空間を定義することができます。@NamespacePrefix アノテーションを呼び出して、@XPath アノテーションの namespaces 引数を初期化します。その後、@NamespacePrefix で定義された名前空間を @XPath アノテーションの式の値で使用することができます。

たとえば、接頭辞 ex をカスタム名前空間 http://fusesource.com/examples と関連付けるには、以下のように @XPath アノテーションを呼び出します。

public class AccountService {
  ...
  public void credit(
    @XPath(
      value = "/ex:transaction/ex:transfer/ex:receiver/text()",
      namespaces = @NamespacePrefix( prefix = "ex", uri = "http://fusesource.com/examples"
      )
    ) String name,
    @XPath(
      value = "/ex:transaction/ex:transfer/ex:amount/text()",
      namespaces = @NamespacePrefix( prefix = "ex", uri = "http://fusesource.com/examples"
      )
    ) String amount,
  )
  {
    ...
  }
  ...
}
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.