Mule:使用DB中的其他信息丰富XML

时间:2014-02-06 19:14:18

标签: xml mule

我有一个XML进入我的Mule流程。我还想进一步添加/修改它的值。例如,结构如下:

     <Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"            xsi:noNamespaceSchemaLocation="C:/XML/PO/Outbound/XML/PO.xsd">   
    <TransactionId>376721</TransactionId> 
   <TransactionDateTime>2014-01-30T00:00:00</TransactionDateTime>                        
   <Parties>   
      <Party>     
             <PartyType>Sold</PartyType>    
             <PartyCode>106246</PartyCode>    
             <FirstName>John</FirstName>   
             <CompanyName>100</CompanyName>    
             <Address1>1916 Quino Street</Address1>     
             <CityName>San Francisco</CityName>  
             <StateOrProvinceCode>CA</StateOrProvinceCode>   
             <PostalCode>94805</PostalCode>   
             <CountryCode>USA</CountryCode>   
             <PhoneNumber>5102333333</PhoneNumber>                             
        </Party>   
        <Party>     
           <PartyType>DC</PartyType>   
           <Address1/>  
           <Address2/>     
           <Address3/> 
           <CityName/>      
           <StateOrProvinceCode/>    
           <PostalCode/>    
           <PhoneNumber/>  
        </Party>  
        <Party>... </Party> 
   </Parties>
   ...
</Order>

现在我在数据库中有Address1 / Address2 / Address3值。我需要提取它&amp;进一步丰富XML与该数据。我可以使用JDBC数据库适配器来获取值。使用检索到的值修改XML的最佳方法是什么?然后进一步处理XML?

2 个答案:

答案 0 :(得分:0)

一种选择是将Groovy与XmlSlurper一起使用,具体取决于遍历文档的容易程度:

//parse
records = new XmlSlurper(false,false).parseText(payload)
//find your address elements and set the data
records.Parties.children().getAt(1).children().find { e -> e.name().equals('Address1') }.replaceBody("My Address")
import groovy.xml.XmlUtil
import groovy.xml.StreamingMarkupBuilder
//rebuild the xml
streamingMarkupBuilder=new StreamingMarkupBuilder()
result = XmlUtil.serialize(streamingMarkupBuilder.bind{mkp.yield records})

答案 1 :(得分:0)

从Mule中 XML 中提取值的最佳方法是使用 XPATH 。 以下是参考: - https://developer.mulesoft.com/docs/display/current/XPath

如果您想使用检索值修改XML,最好的方法是在Mule流程中使用 XSLT 。参考: - https://developer.mulesoft.com/docs/display/current/XSLT+Transformer < / p>

您还可以在此处查看相关内容: - how to add a node in a xml payload in mule