2014-01-08 57 views
0
#[xpath://soapenv:Envelope/soapenv:Body/out:notifications/out:Notification/out:sObject/urn:Summary] 

我正在使用上述XPATH获取XML节点值的代码。它不工作。如何纠正这一点。但下面的代码工作正常。如何在mule中使用XPATH获取XML节点值?

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

我想使用第一个XPATH语法格式工作我该怎么做? 以下代码是我的XML虚拟数据。所有的

<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> 

回答

3

首先,在第一个表达你指的是被称为Summary元素不在XML存在。

现在,如果你想在你的XPath表达式中使用的命名空间,你将不得不宣布他们在全球的元素称为命名空间管理:

<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]" /> 
+0

非常感谢..它的工作现在 – user3129532