進行解析JSON是基於DOM的,對Html的DOM熟悉的話,解析XML就沒什麼困難了。注意:在Firefox中,解析器不會忽略空格,所以元素間的空格,FF一樣會認為是一個節點。不過在我們用程序拼接XML的時候,一般不會出現節點間有空格的情況。
在根目錄下添加一個新的一般處理程序(GetXML.ashx),代碼如下:
- <input type="button" value="GetXML" onclick="getXML();" />
在Default.ASPx頁面添加以下腳本:
- GetXML.ashx
注意到代碼段解析JSON;主要是為了消除IE6和其他浏覽器的兼容問題,在其他浏覽器下,允許request.responseXML.getElementsByTagName("Person");添加測試按鈕:
- function getXML() {
- // 在IE7下測試通過,IE6下必須創建 new ActiveXObject("MSXML2.XMLHTTP.6.0")
- var request = new XMLHttpRequest();
- request.open('GET', 'GetXML.ashx');
- request.onreadystatechange = function() {
- if (request.readyState == 4 && request.status == 200) {
- var XMLDoc = request.responseXML;
- var root = XMLDoc.documentElement;
- var elements = root.getElementsByTagName("Person");
- alert(elements.length); // 2
- // elements[0].firstChild 引用到第一個Person節點的Id節點
- // elements[0].firstChild.firstChild 引用到Id節點的文本節點
- // 因為文本節點是元素節點的第一個子節點
- alert(elements[0].firstChild.firstChild.nodeValue); // 1
- alert(elements[1].lastChild.firstChild.nodeValue); // 'n_2'
- }
- }
- request.send(null);
- }
從代碼上很容易看出,解析JSON相對直觀,在網絡中需要傳輸的字符串也比較少,解析過程中也不需要考慮浏覽器兼容問題,但JSON比較適合輕量級的數據交互,XML則比JSON多了一些特性,比如命名空間,還有更多的節點類型。