jquery解析xmlプラグインz 4 x

3454 ワード


このプラグインには2つの方法があります.
     1). z 4 xはxmlを解析しjsonオブジェクトに変換する.
     2). 反射メソッド.jsonオブジェクトを反射できます.
 
 
 
 jquery.z4x.jsソース:
 
$.extend({  
    z4x: function(s) {  
        var dom;  
        if (typeof(s) == "object") {  
            dom = s;  
        } else if (typeof(s) == "string") {  
            if (window.ActiveXObject) {  
                dom = new ActiveXObject("Microsoft.XmlDom");  
                dom.async = "false";  
                dom.loadXML(s);  
            } else {  
                dom = new DOMParser().parseFromString(s, "text/xml");  
            }  
        }  
        var _dig = function(ele) {  
            var oo = {};  
            var alen = (ele.attributes) ? ele.attributes.length: 0;  
            for (var i = 0; i < alen; i++) {  
                oo["$" + ele.attributes[i].name] = ele.attributes[i].value;  
            }  
  
            var elen = ele.childNodes.length;  
            if (elen == 0) return oo;  
  
            var tem;  
            for (var i = 0; i < elen; i++) {  
                tem = oo[ele.childNodes[i].nodeName];  
  
                if (typeof(tem) == "undefined") {  
  
                    if (ele.childNodes[i].childNodes.length == 0) {  
  
                        if (ele.childNodes[i].nodeName == "#text" || ele.childNodes[i].nodeName == "#cdata-section") {  
                            oo["$$"] = ele.childNodes[i].nodeValue;  
                        } else {  
                            oo[ele.childNodes[i].nodeName] = [_dig(ele.childNodes[i])];  
                        }  
  
                    } else {  
                        oo[ele.childNodes[i].nodeName] = [_dig(ele.childNodes[i])];  
                    }  
                } else {  
                    tem[tem.length] = _dig(ele.childNodes[i]);  
                    oo[ele.childNodes[i].nodeName] = tem;  
                }  
            }  
            return oo;  
        };  
  
        var oo = {};  
        oo[dom.documentElement.nodeName] = _dig(dom.documentElement);  
        return oo;  
    },  
    ref : function(o,sp)  
    {  
        sp = sp?sp:"
"; var tem = []; for(var i in o) tem[tem.length]=i+":"+o[i]; return tem.join(sp); } });

使用例:
 
 
    1. a.xml
 
<?xml version="1.0" encoding="utf-8"?>  
<root>  
    <a id="t1" desc="just test">abc</a>  
    <b id="t2"><![CDATA[ 
        <c>test</c> 
    ]]></b>  
</root>

 
2.呼び出し
$(function(){  
    $.get("a.xml",function(data){  
        var json = $.z4x(data);//    ,    json.  
        alert($.ref(json));//  json  
  
        //alert($.ref(json.root));//    ,         
  });  
})  

 
簡単ではないでしょうか.早くやってみましょう.