【发布时间】:2023-04-06 04:22:01
【问题描述】:
我需要将一个值传递给 datamapper 并将其检索到映射字段。在下面的 InputXML 中,'pages' 元素被重复,如图所示。我的输出应该只包含与输入匹配的 pages 元素的 book 对象。 (即,我通过 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>
输入XML:
<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>
输出XML:
<catalogue2>
<books>
<book>
<name>book1</name>
<author>author1</author>
<pages>100</pages>
</book>
<writeups>
<a>1</a>
</writeups>
<catalogue2>
方法一:
//Catalogue/books[inputArguments.myVariable=Catalogues/books/book/pages]/book/pages
在页面的 xpath 规则中,我试图选择这样一个具有 pages 值作为传递的输入参数的书籍对象。但是这种方法会抛出一个异常说
org.jetel.exception.JetelRuntimeException: net.sf.saxon.trans.StaticError: Undeclared variable in a standalone expression
能否请您更正 xpath 表达式?
【问题讨论】:
标签: xml xpath mule datamapper