如何在JS中实现相互转换XML和JSON
开发中有时候会遇到XML和JSON相互转换,要求在JS中使⽤,⽹上了好多,竟然每⼀个好⽤的,要么缺胳膊少腿,要么词不达意,太没天理了,果断⾃⼰实现⼀个。
JSON与XML的区别⽐较
1.定义介绍
(1).XML定义
扩展标记语⾔ (Extensible Markup Language, XML) ,⽤于标记电⼦⽂件使其具有结构性的标记语⾔,可以⽤来标记数据、定义数据类型,是⼀种允许⽤户对⾃⼰的标记语⾔进⾏定义的源语⾔。 XML使⽤DTD(document type definition)⽂档类型定义来组织数据;格式统⼀,跨平台和语⾔,早已成为业界公认的标准。
XML是标准通⽤标记语⾔ (SGML) 的⼦集,⾮常适合 Web 传输。XML 提供统⼀的⽅法来描述和交换独⽴于应⽤程序或供应商的结构化数据。
(2).JSON定义
JSON(JavaScript Object Notation)⼀种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进⾏数据交换。JSON采⽤兼容性很⾼的、完全独⽴于语⾔⽂本格式,同时也具备类似于C语⾔的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的⾏为。这些特性使JSON成为理想的数据交换语⾔。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的⼀个⼦集。
2.XML和JSON优缺点
(1).XML的优缺点
<1>.XML的优点
A.格式统⼀,符合标准;
B.容易与其他系统进⾏远程交互,数据共享⽐较⽅便。
<2>.XML的缺点
A.XML⽂件庞⼤,⽂件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费⼤量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
C.客户端不同浏览器之间解析XML的⽅式不⼀致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
(2).JSON的优缺点
<1>.JSON的优点:
A.数据格式⽐较简单,易于读写,格式都是压缩的,占⽤带宽⼩;
B.易于解析,客户端JavaScript可以简单的通过eval()进⾏JSON数据的读取;
C.⽀持多种语⾔,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语⾔,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调⽤,PHP服务器端的对象、数组等能直接⽣成JSON格式,便于客户端的访问提取;
E.因为JSON格式能直接为服务器端代码使⽤,⼤⼤简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON的缺点
A.没有XML格式这么推⼴的深⼊⼈⼼和喜⽤⼴泛,没有XML那么通⽤性;
B.JSON格式⽬前在Web Service中推⼴还属于初级阶段。
在Javascript中实现XML和JSON相互转换
先看调⽤例⼦:
复制代码代码如下:
<viewport id="menuPane" layout="border">
<panel region="center" border="0" layout="border"> <tbar>
<toolbar text="XXXX">
<menu>
<text text="11">
</text>
<text text="22">
</text>
<text text="33">
</text>
</menu>
</toolbar>
<toolbar text="XXXX">
<menu>
<text text="44">
</text>
<text text="55">
</text>
<menu>
<text text="6 6">
</text>
</menu>
<text text="77">
</text>
</menu>
</toolbar>
</tbar>
</panel>
</viewport>
var xmlParser = new XmlToJson();
var json = xmlParser.parse(xml);
console.log( JSON.stringify(json) );
var jsonParser = new JsonToXml();
var xml = jsonParser.parse(json);
console.log( xml );
XML转换为JSON:
复制代码代码如下:
function XmlToJson() {
}
XmlToJson.prototype.setXml = function(xml) {
if(xml && typeof xml == "string") {
else if(typeof xml == "object"){
}
};
Xml = function() {
l;
};
XmlToJson.prototype.parse = function(xml) {
this.setXml(xml);
l);
};
python处理xml文件vert = function(xml) {
if (deType != 1) {
return null;
}
var obj = {};
var nodeValue = (Content || "").replace(/(\r|\n)/g, "").replace(/^\s+|\s+$/g, ""); if(nodeValue && xml.childNodes.length == 1) {
< = nodeValue;
}
if (xml.attributes.length > 0) {
for (var j = 0; j < xml.attributes.length; j++) {
var attribute = xml.attributes.item(j);
deName] = deValue;
}
}
if (xml.childNodes.length > 0) {
var items = [];
for(var i = 0; i < xml.childNodes.length; i++) {
var node = xml.childNodes.item(i);
var item = vert(node);
if(item) {
items.push(item);
}
}
if(items.length > 0) {
obj.items = items;
}
}
return obj;
};
JSON转换为XML:
复制代码代码如下:
function JsonToXml() {
}
JsonToXml.prototype.spacialChars = ["&","<",">","\"","'"];
JsonToXml.prototype.validChars = ["&","<",">",""","'"];
String = function(){
sult.join("");
};
placeSpecialChar = function(s){
for(var i=0;i<this.spacialChars.length;i++){
place(new RegExp(this.spacialChars[i],"g"),this.validChars[i]);
}
return s;
};
JsonToXml.prototype.appendText = function(s){
s = placeSpecialChar(s);
};
JsonToXml.prototype.appendAttr = function(key, value){
};
JsonToXml.prototype.appendFlagBeginS = function(s){
};
JsonToXml.prototype.appendFlagBeginE = function(){
};
JsonToXml.prototype.appendFlagEnd = function(s){
};
JsonToXml.prototype.parse = function(json){
String();
};
vert = function(obj) {
var nodeName = pe || "item";
this.appendFlagBeginS(nodeName);
var arrayMap = {};
for(var key in obj) {
var item = obj[key];
if(key == "xtype") {
continue;
}
structor == String) {
this.appendAttr(key, item);
}
structor == Array) {
arrayMap[key] = item;
}
}
this.appendFlagBeginE();
for(var key in arrayMap) {
var items = arrayMap[key];
for(var i=0;i<items.length;i++) {
}
}
this.appendFlagEnd(nodeName);
};
以上就是为⼤家整理的在Javascript中实现XML和JSON相互转换,希望本⽂所述对⼤家学习javascript有所帮助。关于XML和JSON互相转换感兴趣的朋友还可参考在线⼯具:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论