如何从 mule 中的 Payload XML 获取元素值?
How can i get an element value from Payload XML in mule?
从这个 XML 我想获取 id 并设置在一个变量中。
示例:OrderID = 4258477000
<?xml version="1.0" encoding="UTF-8"?>
<order>
<id type="integer">4258477000</id>
<email>khaleed@mmtvbd.com</email>
<closed-at type="dateTime" nil="true"/>
<created-at type="dateTime">2016-10-24T21:41:51+06:00</created-at>
<updated-at type="dateTime">2016-10-24T21:41:52+06:00</updated-at>
<number type="integer">19</number>
</order>
您可以使用 XPATH 或 dataweave 来做到这一点。
Xpath :-
#[xpath3('/*:order/*:id',payload,"STIRNG")]
或数据编织:-[=12=]
<dw:transform-message doc:name="Transform Message">
<dw:input-payload mimeType="application/xml"/>
<dw:set-variable variableName="variableName"><![CDATA[%dw 1.0
%output application/java
---
payload.order.id]]>
</dw:set-variable>
</dw:transform-message>
希望对您有所帮助。
如果您尝试提取的 "id" 字段来自附件,那么您必须首先解决的问题是检索 xml。单个 message.inboundAttachments 元素值将为您 return 一个 javax.activation.DataHandler 数据类型。您必须将其转换为 xml 或字符串才能使其可用。
实现此目的的一种方法是:
使用@InboundAttachments 注释创建一个客户转换器(https://docs.mulesoft.com/mule-user-guide/v/3.7/inboundattachments-annotation)
将 DataHandler 对象转换为字符串
final InputStream in = dataHandler.getInputStream();
byte[] byteArray=org.apache.commons.io.IOUtils.toByteArray(in);
要么提取数据并将其存储到转换器中的变量中,要么return string/xml 作为您的有效载荷并在下一个组件上使用 xpath 或 dataweave。
有点复杂,我知道。
试试这个:
<set-variable variableName="myvar" value="#[payload.order.id]" doc:name="Variable"/>
从这个 XML 我想获取 id 并设置在一个变量中。 示例:OrderID = 4258477000
<?xml version="1.0" encoding="UTF-8"?>
<order>
<id type="integer">4258477000</id>
<email>khaleed@mmtvbd.com</email>
<closed-at type="dateTime" nil="true"/>
<created-at type="dateTime">2016-10-24T21:41:51+06:00</created-at>
<updated-at type="dateTime">2016-10-24T21:41:52+06:00</updated-at>
<number type="integer">19</number>
</order>
您可以使用 XPATH 或 dataweave 来做到这一点。
Xpath :-
#[xpath3('/*:order/*:id',payload,"STIRNG")]
或数据编织:-[=12=]
<dw:transform-message doc:name="Transform Message">
<dw:input-payload mimeType="application/xml"/>
<dw:set-variable variableName="variableName"><![CDATA[%dw 1.0
%output application/java
---
payload.order.id]]>
</dw:set-variable>
</dw:transform-message>
希望对您有所帮助。
如果您尝试提取的 "id" 字段来自附件,那么您必须首先解决的问题是检索 xml。单个 message.inboundAttachments 元素值将为您 return 一个 javax.activation.DataHandler 数据类型。您必须将其转换为 xml 或字符串才能使其可用。
实现此目的的一种方法是:
使用@InboundAttachments 注释创建一个客户转换器(https://docs.mulesoft.com/mule-user-guide/v/3.7/inboundattachments-annotation)
将 DataHandler 对象转换为字符串
final InputStream in = dataHandler.getInputStream(); byte[] byteArray=org.apache.commons.io.IOUtils.toByteArray(in);
要么提取数据并将其存储到转换器中的变量中,要么return string/xml 作为您的有效载荷并在下一个组件上使用 xpath 或 dataweave。
有点复杂,我知道。
试试这个:
<set-variable variableName="myvar" value="#[payload.order.id]" doc:name="Variable"/>