如何在mule中使用XPATH获取XML节点值?

时间:2014-01-08 04:29:41

标签: mule mule-studio mule-el mule-module-jpa

#[xpath://soapenv:Envelope/soapenv:Body/out:notifications/out:Notification/out:sObject/urn:Summary] 

我使用上面的XPATH代码来获取XML节点值。它没有工作。怎么能纠正这个。但是下面的代码工作正常。

<logger message="#[xpath('//*[local-name()=\'Description\']').text]&quot;" level="INFO" doc:name="Logger"/> 

我想继续使用第一个XPATH语法格式我该怎么做? 以下代码是我的XML Dummy数据。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:out="http://soap.sforce.com/2005/09/outbound" xmlns:urn="urn:sobject.enterprise.soap.sforce.com">
   <soapenv:Header/>
   <soapenv:Body>
      <out:notifications>
         <out:OrganizationId>12345</out:OrganizationId>
         <out:ActionId>999999</out:ActionId>
         <out:SessionId>000000</out:SessionId>
         <out:EnterpriseUrl>ggggggg</out:EnterpriseUrl>
         <out:PartnerUrl>hhhhhhh</out:PartnerUrl>
         <!--1 to 100 repetitions:-->
         <out:Notification>
            <out:Id>iiiiiiii</out:Id>
            <out:sObject>
               <!--Zero or more repetitions:-->
               <urn:fieldsToNull>jjjjjjj</urn:fieldsToNull>
               <urn:Id>789076</urn:Id>
               <!--Optional:-->
               <urn:FirstName>aaaa</urn:FirstName>
               <!--Optional:-->
               <urn:LastName>bbbbb</urn:LastName>
            </out:sObject>
         </out:Notification>
      </out:notifications>
   </soapenv:Body>
</soapenv:Envelope>

1 个答案:

答案 0 :(得分:3)

首先,在第一个表达式中,您指的是一个名为Summary的元素,它在您的XML中不存在。

现在,如果要在xpath表达式中使用名称空间,则必须在名为namespace-manager的全局元素中声明它们:

<mulexml:namespace-manager includeConfigNamespaces="false">
    <mulexml:namespace prefix="soapenv" uri="http://schemas.xmlsoap.org/soap/envelope/" />
    <mulexml:namespace prefix="out" uri="http://soap.sforce.com/2005/09/outbound" />
    <mulexml:namespace prefix="urn" uri="urn:sobject.enterprise.soap.sforce.com" />
</mulexml:namespace-manager>

使用上述内容并将Summary替换为确实存在的内容,有效:

<logger level="WARN" message="#[xpath://soapenv:Envelope/soapenv:Body/out:notifications/out:Notification/out:sObject/urn:Id]" />