2016-08-03 47 views
0

我需要一個XPath表達式從下面的示例XML腳本僅檢索BalanceResult屬性的具體值:XPath表達式來檢索所有子節點的值僅

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Body> 
    <ars:QueryBalanceResultMsg xmlns:ars="http://www.huawei.com/bme/cbsinterface/arservices" xmlns:arc="http://cbs.huawei.com/ar/wsservice/arcommon" xmlns:cbs="http://www.huawei.com/bme/cbsinterface/cbscommon"> 
     <QueryBalanceResult> 
      <ars:AcctList> 
       <ars:BalanceResult> 
        <arc:BalanceType>C_MAIN_ACCOUNT</arc:BalanceType> 
        <arc:BalanceTypeName>MainAccount</arc:BalanceTypeName> 
        <arc:TotalAmount>80000</arc:TotalAmount> 
        <arc:BalanceDetail> 
         <arc:BalanceInstanceID>702000000000008916</arc:BalanceInstanceID> 
         <arc:EffectiveTime>20160803080942</arc:EffectiveTime> 
         <arc:ExpireTime>20370101010000</arc:ExpireTime> 
        </arc:BalanceDetail> 
       </ars:BalanceResult> 
       <ars:BalanceResult> 
        <arc:BalanceType>C_Bonus_Account</arc:BalanceType> 
        <arc:BalanceTypeName>Bonus Balance Account</arc:BalanceTypeName> 
        <arc:TotalAmount>3900</arc:TotalAmount> 
        <arc:BalanceDetail> 
         <arc:BalanceInstanceID>702000000000008543</arc:BalanceInstanceID> 
         <arc:EffectiveTime>20160803082506</arc:EffectiveTime> 
         <arc:ExpireTime>20191211121212</arc:ExpireTime> 
        </arc:BalanceDetail> 
       </ars:BalanceResult> 
       ....... 
      </ars:AcctList> 
     </QueryBalanceResult> 
    </ars:QueryBalanceResultMsg> 
</soapenv:Body> 

,使得我的表達返回如下內容:

C_MAIN_ACCOUNT,80000,20370101010000,C_Bonus_Account,3900,20191211121212,... 上述模板:(圓弧:平衡類型,圓弧:總計,圓弧:過期時間)

下表達式返回包括標籤在內的所有內容 - 不需要。

//*[local-name()='BalanceResult'][*[local-name()='BalanceType']] 

此外,由於有可能是n個BalanceResult屬性(在樣品的上方,其2),我不能拿出的溶液。

感謝您的幫助!謝謝。

回答

2

什麼:

//BalanceResult/descendant::*[local-name() = 'BalanceType' or local-name() = 'TotalAmount' or local-name() = 'ExpireTime'] 

這導致:

<BalanceType>C_MAIN_ACCOUNT</BalanceType> 
<TotalAmount>80000</TotalAmount> 
<ExpireTime>20370101010000</ExpireTime> 
<BalanceType>C_Bonus_Account</BalanceType> 
<TotalAmount>3900</TotalAmount> 
<ExpireTime>20191211121212</ExpireTime> 

注意,我刪除了命名空間從你的例子。