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

是的,如果您在以下位置阅读有关 xpath 的文档:http ://camel.apache.org/xpath - 然后请参阅在标头上使用 XPath部分

类似的东西

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