差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:web:ext:xmlparser [2013/07/11 13:32]
tony
java:web:ext:xmlparser [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​javascript extjs}} 
-====== XML Parser ====== 
-===== Problem ===== 
-在使用Ext.Ajax請求後,免不了需要去處理回應的內容:​ 
-<code javascript>​ 
-Ext.Ajax.request({ 
-  url: '​requestURL.action',​ 
-  params: { 
-    key: aKey 
-  }, 
-  success: function(response){ 
-    var xml = response.responseXML;​ 
-    // Handler the response 
-  }, 
-  failure : function(response,​ options){ ​ 
-    Ext.example.msg('​Warning',​ '​Connect to server failed: ' + response.status);​ 
-  } 
-}); 
-</​code>​ 
  
-我期望會取得的結果為:​ 
-<code xml> 
-<​result>​ 
-  <​status>​success</​status>​ 
-  <​msg></​msg>​ 
-</​result>​ 
-</​code>​ 
- 
-一般正規的原始做法如下:​ 
-<code javascript>​ 
-var text = "<​result><​status>​success</​status><​msg>​test msg</​msg></​result>";​ 
- 
-var xmlDoc = null; 
-if( window.DOMParser ){ 
- var parser = new DOMParser();​ 
- xmlDoc = parser.parseFromString(text,"​text/​xml"​);​ 
-} else { 
- xmlDoc = new ActiveXObject("​Microsoft.XMLDOM"​);​ 
-    xmlDoc.async=false;​ 
-    xmlDoc.loadXML(text); ​ 
-} 
- 
-var statusNode = xmlDoc.getElementsByTagName ("​status"​)[0];​ 
-var msgNode = xmlDoc.getElementsByTagName ("​msg"​)[0];​ 
-var status = statusNode.textContent == null ? statusNode.text : statusNode.textContent;​ 
-var msg = msgNode.textContent == null ? msgNode.text : msgNode.textContent;​ 
-</​code>​ 
-雖然說在ExtJS中取得的response.responseXML已經是DOM Document物件,但要去retrieve DOM Element還是必須根據不同瀏覽器要有不同做法。可以參考這個[[http://​www.w3schools.com/​dom/​dom_document.asp|連結]]中對DOM Document各屬性與方法的瀏覽器支援表。重點是在ExtJS中,有什麼較一致的做法呢?​ 
-===== How to? ===== 
- 
-===== Reference ===== 
-  * [[http://​javaclaus.wordpress.com/​2010/​10/​12/​extjs-xml-and-the-dom/​|ExtJS,​ XML, and the DOM]] 
-  * [[http://​help.dottoro.com/​ljssopjn.php|Dotoro - DOM Parser]]