2011-11-30 58 views
4

我有以下SOAP響應:是否可以使用jQuery xml處理程序解析SOAP響應?

<?xml version="1.0" encoding="UTF-8"?> 
<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <getPurseBalanceResponse xmlns="https://secure.card.com/"> 
      <getPurseBalanceResult> 
       <callStatus> 
        <Success>true</Success> 
        <ErrorCode/> 
       </callStatus> 
       <balance>63.35</balance> 
       <pending>30</pending> 
       <logoUrl>https://prepa.sqasddsad.com/ytm/images/logos/sq_cashlesscaterpurse3.gif</logoUrl> 
       <purseId>23456</purseId> 
       <CurrencyCode>GBP</CurrencyCode> 
      </getPurseBalanceResult> 
     </getPurseBalanceResponse> 
    </soap:Body> 
</soap:Envelope> 

我的問題是,我可以分析這與jQuery如下面...

var xmlText = $(xml).find("soap:Envelope"). 
        find("soap:Body"). 
        find("getPurseBalanceResponse"). 
        find("getPurseBalanceResult"). 
        find("balance").text(); 
console.log(xmlText); 

目前此方法返回一個空字符串 - 這將是正確jQuery調用來獲得「平衡」?

回答

14

你需要使用雙反斜線\\

var xmlText = $(xml).find("soap\\:Envelope") 
        .find("soap\\:Body") 
        .find("getPurseBalanceResponse") 
        .find("getPurseBalanceResult") 
        .find("balance").text(); 
console.log(xmlText); 

這裏是一個working fiddle逃避特殊字符(冒號)。

+0

謝謝你,我不得不在選擇器中轉義特殊字符。 – Vinnyq12

1

簡答:是的。 SOAP是XML。任何XML解析器都可以讀取它。 SOAP提供了一整層使用XML作爲底層數據交換格式的東西,但如果您對使用SOAP庫不感興趣,則XML庫將爲您執行此操作。只爲你做更多的工作。

+0

這是真實的,但如果是這樣的話 - 爲什麼不是我的XML解析方法與jQuery有效的,如果這是純粹的XML? – david99world

+0

你沒有說它不工作。什麼是你收到的錯誤信息? – tkone

+0

另外示例XML文檔解析爲形式的有效的XML文檔,我能拉你正在尋找通過Python的xml.dom.minidom解析器的價值,所以它是有效的XML,可以解析爲這樣的。 – tkone