`

jquery解析xml插件z4x

阅读更多

 

该插件有两个方法:

     1). z4x 解析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:"\n";  
        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));//继续反射,看看里面有什么  
  });  
})  

 

是不是很简单啊,快试试吧。

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics