2013-03-07 98 views
0

我需要訪問包含默認命名空間 用於訪問包含命名空間的根節點IFX子節點正在使用XML解析使用XPath的子節點包含默認命名空間

//ns:IFX/ns:BankSvcRs/ns:RqUID 

但現在我需要訪問在<severity><SPName><CardEmbossNum>

<IFX xmlns="http://www.ifxforum.org/IFX_150"> 

    <BankSvcRs> 
     <RqUID>124566665222</RqUID> 
     <com.bac:CardAddRs xmlns:com.bac="http://www.fnf.com/xes/bac"> 
      <Status> 
       <Severity>Info</Severity> 

      </Status> 
      <RqUID>124566665222</RqUID> 
      <com.fnf:CardId xmlns:com.fnf="http://www.fnf.com/xes"> 
       <CustId> 
        <SPName>com.fnf.xes.BOSS</SPName> 
        <CardLogicalData> 
         <CardEmbossNum/> 
         <Name>SpiderMAN</Name> 
        </CardLogicalData> 
       </CustId> 
      </com.fnf:CardId> 
      <com.bac:CardInfo> 
       <com.bac:CardAssociation/> 
      </com.bac:CardInfo> 
      <com.fnf:CardRec xmlns:com.fnf="http://www.fnf.com/xes"> 
       <com.fnf:CardId> 
        <CustId> 
         <SPName/> 
         <CardLogicalData> 
          <CardEmbossNum>00000000000000000</CardEmbossNum> 
         </CardLogicalData> 
        </CustId> 
       </com.fnf:CardId> 
       <com.fnf:CardStatus> 
        <StatusCode>0</StatusCode> 
        <StatusDesc>Fail</StatusDesc> 
       </com.fnf:CardStatus> 
      </com.fnf:CardRec> 
     </com.bac:CardAddRs> 
    </BankSvcRs> 
</IFX> 

回答

2

您需要可以申報你使用任何API所需的命名空間,然後使用類似:

/ns:IFX/ns:BankSvcRs/com.fnf:CardId/ns:Status/ns:Severity 

或者你也可以做這樣的事情:或者,如果你真的想

/ns:IFX/ns:BankSvcRs/*/ns:Status/ns:Severity 

/ns:IFX/ns:BankSvcRs/*[local-name() = 'CardAddRs']/ns:Status/ns:Severity 

雖然我個人認爲,使用local-name(),以此來避開正常使用名稱空間不是一個好習慣。

您沒有向我們展示您使用此XPath的代碼,因此,這些幫助盡我所能提供,無需提供更多信息。

+0

非常感謝。它的工作完美:) – 2013-03-07 10:09:59

相關問題