该插件有两个方法:
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));//继续反射,看看里面有什么
});
})
是不是很简单啊,快试试吧。
XML转JSON插件z4x.js
介绍了一个名为z4x.js的jQuery插件,该插件能够将XML文件解析为JSON对象,并提供反射方法进一步操作这些对象。通过简单的API调用,用户可以轻松实现XML到JSON的转换。
235

被折叠的 条评论
为什么被折叠?



