2

アプリケーションでキャメルに移行しています。いくつかの xml メッセージを処理する必要があります (値の取得\ステータスの比較)。この問題を解決するために、純粋な Java を使用して作成された一連のカスタム プロセッサがありますが、camel 機能を使用してこれを変更するように依頼されました。コードの例:

.choice()
    .when().xpath("/Response/Header/Status = 'OK' ")......

これはうまくいっています。

ここで、ヒントを他のヒントと比較する必要があります。これを行うには、次の値を設定する必要があります。

/Response/Header/Hint

を小文字にして、contains をチェックします。If - /Response/Header/Hint 値 (例:

<Hint>MyHint</Hint> 

-小文字には「ヒント」が含まれ、次に...にルーティングされます。それ以外の場合は...にルーティングされます。

私が興味を持っているもう1つのことは、メッセージを転送する前に < Hint>MyHint< /Hint> 全体を削除する方法です (いくつかのタグを削除します)

また、camel の xpath をすばやく理解するためのチュートリアルを教えてください。

4

2 に答える 2

1

XSLT を使用して文字列を大文字または小文字に変換するにはどうすればよいですか? でfn:lower-case(string)説明されているように、ヒントを比較するために使用できます。.

<Hint>タグの削除については、次のような複数の可能性があります。

  1. XSLTを使用して xml タグを削除するに示すように、XSLT を使用してコンテンツをフィルター処理します。
  2. フィルタリングを行うBeanを呼び出す
于 2012-11-30T10:03:55.563 に答える
1

答えはこれです:

.choice()
    .when().xpath("/Response/Header/Status/text() = 'OK'")
        .to("xslt:xsl/RemoveTag.xsl")
            .choice().when().xpath("//Response/Header/Hint[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'hint')]").to

RemoveTag.xsl は小さな変更で、XSLT で xml タグを削除 します olivier roger に感謝します!

于 2012-11-30T11:34:35.403 に答える