XPATH条件映射datamapper中的字段

时间:2014-03-17 05:52:14

标签: xml xpath mule datamapper

我需要将值传递给datamapper并将其检索到map字段。在下面的InputXML中,'页面'如图所示重复元素。我的输出应该只有那个book对象,其中pages元素与input相匹配。 (即;我通过myVariable传递100作为页面的值。因此输出应该只包含100页的book元素)。

<set-session-variable variableName="myVariable" value="100" />
<data-mapper:transform doc:name="XML To XML" config-ref="xml_to_xml" >
        <data-mapper:input-arguments>
            <data-mapper:input-argument key="myVariable">#[sessionVars.myVariable]</data-mapper:input-argument>
        </data-mapper:input-arguments>
    </data-mapper:transform>

InputXML:

<catalogue>
<books>
 <book>
   <name>book1</name>
   <author>author1</author>
   <pages>100</pages>
 </book>
 <book>
   <name>book2</name>
   <author>author2</author>
   <pages>200</pages>
 </book>
 <book>
   <name>book3</name>
   <author>author3</author>
   <pages>300</pages>
 </book>
</books>
<writeups>
 <a>1</a>
</writeups>
<catalogue>

OutputXML:

<catalogue2>
<books>
 <book>
   <name>book1</name>
   <author>author1</author>
   <pages>100</pages>
 </book>

<writeups>
 <a>1</a>
</writeups>
<catalogue2>

方法1:

//Catalogue/books[inputArguments.myVariable=Catalogues/books/book/pages]/book/pages

在页面的xpath规则中,我试图选择这样一个book对象,它具有pages值作为传递的输入参数。但这种做法引发了一个例外

org.jetel.exception.JetelRuntimeException: net.sf.saxon.trans.StaticError: Undeclared      variable in a standalone expression

请您更正xpath表达式吗?

1 个答案:

答案 0 :(得分:0)

我认为你不能直接在XPath表达式中使用输入参数。也许您应该首先使用输入参数将其添加到有效负载(XML),然后再执行第二次数据映射,在第二次转换中使用此添加的字段:

http://www.mulesoft.org/documentation/display/33X/Using+Input+Arguments

相关问题