0

タイトルが示すように、次のスニペットに似た xml を文字列として含むヘッダーを持つルートがあります。

<files>
  <image_file1>image.png</image_file1>
  <image_file2>image.png</image_file2>
</files>

私がやろうとしているのは、次のようなものを使用して xpath 経由で分割することです。次のように、xml が本体の一部である場合、すべて正常に実行されます。

from(myIncomingQueue)
    .convertBodyTo(String.class, "utf-8")
    .split(xpath("//*[local-name()='files']/*"))
        .setHeader("FilePropertyToRetrieve", xpath("local-name(//*)").stringResult())
        .to(myFileDownloadQueue)
.routeId("COMMON-CON-Attachment_Router-Id");

次を使用して解決策を見つけました:-

from(myIncomingQueue)
    .setBody(header("myHeaderWithXml"))
    .convertBodyTo(String.class, "utf-8")
    .split(xpath("//*[local-name()='files']/*"))
        .setHeader("FilePropertyToRetrieve", xpath("local-name(//*)").stringResult())
        .setBody(header("CamelOriginalBody"))
        .to(myFileDownloadQueue)
.routeId("COMMON-CON-Attachment_Router-Id");

しかし、ヘッダーを本文に移動せずにそれを行う方法があれば、学習目的で知りたいですか?その後元に戻しますか?

4

1 に答える 1

2

はい、http://camel.apache.org/xpath で xpath に関するドキュメントを読んだ場合はヘッダーでの XPath の使用のセクションを参照してください。

似たようなもの

  .split(xpath("//*[local-name()='files']/*", "myHeaderWithXml"))
于 2013-08-28T10:11:08.663 に答える