差異處
這裏顯示兩個版本的差異處。
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]] |