使用setProperty变量作为XSL的输入

时间:2012-12-02 16:40:34

标签: jms apache-camel

我目前在Apache Camel路由中使用setHeader变量作为XSL文件的输入参数。但是,这不适用于setProperty变量。 Camel不支持吗?

谢谢!

UPDATE -

这是我的路线......

<camel:route>
          <camel:from uri="file:/usr/local/jms_support/update"/>
          <camel:convertBodyTo type="String" />
          <camel:multicast>
            <camel:pipeline>
              <camel:bean ref="getPidsForUpdate"/>

                    <camel:setProperty propertyName="work_or_image"><camel:constant>image</camel:constant></camel:setProperty>

                    <camel:setProperty propertyName="pid"><camel:constant>1234</camel:constant></camel:setProperty>
                    <camel:setProperty propertyName="work_pid"><camel:constant>1234</camel:constant></camel:setProperty>
                    <camel:setProperty propertyName="bibid"><camel:constant>1234</camel:constant></camel:setProperty>
            </camel:pipeline>
            <camel:pipeline>
              <camel:to uri="xslt:xsl/test.xsl"/>
              <camel:to uri="file:/usr/local/jms_support/update_test"/>
            </camel:pipeline>
          </camel:multicast>
        </camel:route>

2 个答案:

答案 0 :(得分:1)

你使用的Camel版本是什么?

Xstl组件将标头和属性设置为参数。您可以在org.apache.camel.builder.xml上启用TRACE日志记录,并查看要添加的参数。

请参阅底部的XsltBuilder和configureTransformer方法的源代码:https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java

答案 1 :(得分:0)

我最终将消息内容存储在变量中,并在消息更改后将消息设置回该内容,如此...

<!-- store original content in header variable -->
<camel:setHeader headerName="marc"><camel:simple>${body}</camel:simple></camel:setHeader>
<!-- run some logic, output gets saved as another header variable, message as this point is now that output -->
<camel:bean ref="getPidsForUpdate"/>
<camel:setHeader headerName="pids"><camel:simple>${body}</camel:simple></camel:setHeader>

....根据该输出设置一堆变量,然后

<!-- get original message to run some more logic-->
<camel:setBody><camel:simple>${headers.marc}</camel:simple></camel:setBody>