Mule为xml添加值

时间:2012-10-18 06:44:24

标签: xml xpath mule

我正在使用Mule使用html文件获取输入并使用输入将值添加到xml我能够提取值我只需要在xml中进一步添加它,我该如何继续进行,任何帮助将不胜感激 这是我的配置

<flow name="webappFlow1" doc:name="webappFlow1">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="submitData" doc:name="HTTP"/>
    <http:body-to-parameter-map-transformer doc:name="Body to Parameter Map"/>
    <logger message="#[payload['VendorId']]" level="INFO" doc:name="Logger"/>
    <message-properties-transformer doc:name="Message Properties">
        <add-message-property key="vendorId" value="#[payload['VendorId']]"/>
    </message-properties-transformer>
    <file:inbound-endpoint path="src/test/resources" responseTimeout="10000" mimeType="text/xml" doc:name="File"/>

</flow>

下一步是将供应商ID添加到xml文件中 如果xml看起来像

<import>
  <field></field>
</import>

我想在字段中添加值 谢谢, 拉胡

2 个答案:

答案 0 :(得分:1)

首次接近mule时,首先要了解的是消息源(即入站端点)只能放在流的开头。在它们之后,任何元素都应该是消息处理器。您可以找到更多详细信息here

也就是说,使用自定义组件或使用fileutil module

可以轻松实现您的用例

您的流程如下所示:

<flow name="webappFlow1" doc:name="webappFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="submitData" doc:name="HTTP"/>
<http:body-to-parameter-map-transformer doc:name="Body to Parameter Map"/>
<logger message="#[payload['VendorId']]" level="INFO" doc:name="Logger"/>
<message-properties-transformer doc:name="Message Properties">
    <add-message-property key="vendorId" value="#[payload['VendorId']]"/>
</message-properties-transformer>
<set-variable variableName="VendorId" value="#[payload['VendorId']]"/>
<file-utils:read-file fileName="import.xml" filePath="/my/path" />
<!-- The following trasformer should be a either some custom java code or a scripting transformer 
 that process the payload (the xmlFile) and by processing it i adds the flowVar['vendorId'] to it. -->
<trasformer ref="xmlTrasformer" />
</flow>

您可以找到有关如何编写变压器herehere

的信息

答案 1 :(得分:0)

如果提交中的摔角工作室是一个问题,您始终可以使用表达式组件来读取文件。

我注意到您打算从src/test/resources读取:Studio不会将此路径放在类路径上,因此假设您可以从src/main/app读取文件,那么以下组件将会读取src/main/app/text.xml

<expression-component doc:name="Read Classpath Resource">
  payload = Thread.currentThread().contextClassLoader.getResourceAsStream('test.xml')
</expression-component>