骡 3.3.1 CE
我可能会踢自己,但接下来发生了什么?
我有一个私有流,它接收 XML 有效负载并提取其他值。这个精简的例子有效。
<flow name="MyFlow">
<set-session-variable variableName="xyzMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
</flow>
我想在上面放置一个 VM 入站端点来解决一些重用问题。但是,当我这样做时,我会在该 xpath 调用上遇到异常。这表明了问题。
<flow name="MyFlow">
<vm:inbound-endpoint exchange-pattern="request-response" path="execute.xyz"/>
<set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
</flow>
我没有看到明显的东西。虚拟机端点的插入是什么导致了这种情况?
Message : There are two transformers that are an exact match for input: "class java.lang.String", output: "interface org.dom4j.Document". Transformers are: "XmlToDom4jDocument(class org.mule.module.xml.transformer.XmlToDomDocument)" and "XmlToDom4jDocument(class org.mule.module.xml.transformer.XmlToDomDocument)"
Code : MULE_ERROR-255
根据下面的讨论进行编辑
基于对尝试 MEL 语法的讨论,这里有一些结果。
输入是(安全信息除外):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://applications.dnb.com/webservice/schema/">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
<sch:AdvancedCompanySearchRequest>
</sch:AdvancedCompanySearchRequest>
</soapenv:Body>
</soapenv:Envelope>
以下是成功执行的确切代码。我在控制台中看到 AdvancedCompanySearchRequest。
<flow name="ExecuteDandB" doc:name="ExecuteDandB">
<!-- <vm:inbound-endpoint exchange-pattern="request-response" path="execute.dnb" doc:name="DnB"/>-->
<set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
<!-- <set-session-variable variableName="dnbMethod" value="#[xpath('/S:Envelope/S:Body/*[1]').name]"/>-->
<logger level="INFO" message="#[sessionVars['dnbMethod']]"/>
</flow>
以下是无法执行的确切代码。我看到了上述两个变压器的例外情况。
<flow name="ExecuteDandB" doc:name="ExecuteDandB">
<!-- <vm:inbound-endpoint exchange-pattern="request-response" path="execute.dnb" doc:name="DnB"/>-->
<!-- <set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>-->
<set-session-variable variableName="dnbMethod" value="#[xpath('/S:Envelope/S:Body/*[1]').name]"/>
<logger level="INFO" message="#[sessionVars['dnbMethod']]"/>
</flow>