如何从mule中的有效负载XML中获取元素值?
我想从这个XML中获取id并在变量中进行设置。 示例:OrderID=4258477000如何从mule中的有效负载XML中获取元素值?,xml,mule,anypoint-studio,Xml,Mule,Anypoint Studio,我想从这个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="dateTi
<?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>
4258477000
khaleed@mmtvbd.com
2016-10-24T21:41:51+06:00
2016-10-24T21:41:52+06:00
19
您可以使用XPATH或dataweave来实现
Xpath:-
#[xpath3('/*:order/*:id',有效负载,“STIRNG”)]
或数据编织:-
<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元素值将返回javax.activation.DataHandler数据类型。您必须将其转换为xml或字符串以使其可行
实现这一目标的一种方法是:
final InputStream in = dataHandler.getInputStream();
byte[] byteArray=org.apache.commons.io.IOUtils.toByteArray(in);
<set-variable variableName="myvar" value="#[payload.order.id]" doc:name="Variable"/>
实际上,我正在使用message.inboundAttachments获取XML数据。请您帮助我如何获取变量的ID。我已经试过你的代码了。但不起作用。#[xpath3('/*:order/*:id',payload,“STRING”)]和通配符名称空间、payload和数据类型parms对我起作用。