首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

z4x,jquery解析xml插件,良好用哦

2012-10-29 
z4x,jquery解析xml插件,很好用哦z4x,本来打算单独写的,不过jquery的用户实在是很多,就搭搭这个顺风车吧,改

z4x,jquery解析xml插件,很好用哦

z4x,本来打算单独写的,不过jquery的用户实在是很多,就搭搭这个顺风车吧,改造成jquery解析xml插件,用过的同事都说很好用哦。顺便加上一个反射方法。

?

???? 该插件有两个方法:

???? 1). z4x 解析xml并转化为json对象。

???? 2). 反射方法,可以反射json对象。

?

?

0. 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));//继续反射,看看里面有什么  });})

?

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

?

?

热点排行