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));// ,
});
})
簡単ではないでしょうか.早くやってみましょう.