本文目錄一覽:
- 1、如何在JS中實現相互轉換XML和JSON
- 2、javascript 將xml轉換為json對象
- 3、用javascript將json轉化成xml,具體json,xml如下
- 4、json和xml的區別
- 5、js對象和json的區別
- 6、json數據格式和xml數據格式的區別和用法是什麼?
如何在JS中實現相互轉換XML和JSON
在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”) {
this.xml = document.createElement(“div”);
this.xml.innerHTML = xml;
this.xml = this.xml.getElementsByTagName(“*”)[0];
}
else if(typeof xml == “object”){
this.xml = xml;
}
};
XmlToJson.prototype.getXml = function() {
return this.xml;
};
XmlToJson.prototype.parse = function(xml) {
this.setXml(xml);
return this.convert(this.xml);
};
XmlToJson.prototype.convert = function(xml) {
if (xml.nodeType != 1) {
return null;
}
var obj = {};
obj.xtype = xml.nodeName.toLowerCase();
var nodeValue = (xml.textContent || “”).replace(/(\r|\n)/g, “”).replace(/^\s+|\s+$/g, “”);
if(nodeValue xml.childNodes.length == 1) {
obj.text = nodeValue;
}
if (xml.attributes.length 0) {
for (var j = 0; j xml.attributes.length; j++) {
var attribute = xml.attributes.item(j);
obj[attribute.nodeName] = attribute.nodeValue;
}
}
if (xml.childNodes.length 0) {
var items = [];
for(var i = 0; i xml.childNodes.length; i++) {
var node = xml.childNodes.item(i);
var item = this.convert(node);
if(item) {
items.push(item);
}
}
if(items.length 0) {
obj.items = items;
}
}
return obj;
};
JSON轉換為XML:
複製代碼 代碼如下:
function JsonToXml() {
this.result = [];
}
JsonToXml.prototype.spacialChars = [“”,””,””,”\””,”‘”];
JsonToXml.prototype.validChars = [“”,””,””,”””,”‘”];
JsonToXml.prototype.toString = function(){
return this.result.join(“”);
};
JsonToXml.prototype.replaceSpecialChar = function(s){
for(var i=0;ithis.spacialChars.length;i++){
s=s.replace(new RegExp(this.spacialChars[i],”g”),this.validChars[i]);
}
return s;
};
JsonToXml.prototype.appendText = function(s){
s = this.replaceSpecialChar(s);
this.result.push(s);
};
JsonToXml.prototype.appendAttr = function(key, value){
this.result.push(” “+ key +”=\””+ value +”\””);
};
JsonToXml.prototype.appendFlagBeginS = function(s){
this.result.push(“”+s);
};
JsonToXml.prototype.appendFlagBeginE = function(){
this.result.push(“”);
};
JsonToXml.prototype.appendFlagEnd = function(s){
this.result.push(“/”+s+””);
};
JsonToXml.prototype.parse = function(json){
this.convert(json);
return this.toString();
};
JsonToXml.prototype.convert = function(obj) {
var nodeName = obj.xtype || “item”;
this.appendFlagBeginS(nodeName);
var arrayMap = {};
for(var key in obj) {
var item = obj[key];
if(key == “xtype”) {
continue;
}
if(item.constructor == String) {
this.appendAttr(key, item);
}
if(item.constructor == Array) {
arrayMap[key] = item;
}
}
this.appendFlagBeginE();
for(var key in arrayMap) {
var items = arrayMap[key];
for(var i=0;iitems.length;i++) {
this.convert(items[i]);
}
}
this.appendFlagEnd(nodeName);
};
javascript 將xml轉換為json對象
代碼如下:
// Changes XML to JSON
function xmlToJson(xml) {
// Create the return object
var obj = {};
if (xml.nodeType == 1) { // element
// do attributes
if (xml.attributes.length 0) {
obj[“@attributes”] = {};
for (var j = 0; j xml.attributes.length; j++) {
var attribute = xml.attributes.item(j);
obj[“@attributes”][attribute.nodeName] = attribute.nodeValue;
}
}
} else if (xml.nodeType == 3) { // text
obj = xml.nodeValue;
}
// do children
if (xml.hasChildNodes()) {
for(var i = 0; i xml.childNodes.length; i++) {
var item = xml.childNodes.item(i);
var nodeName = item.nodeName;
if (typeof(obj[nodeName]) == “undefined”) {
obj[nodeName] = xmlToJson(item);
} else {
if (typeof(obj[nodeName].length) == “undefined”) {
var old = obj[nodeName];
obj[nodeName] = [];
obj[nodeName].push(old);
}
obj[nodeName].push(xmlToJson(item));
}
}
}
return obj;
};
用javascript將json轉化成xml,具體json,xml如下
// 針對你的業務寫的,試試看
function json2xml(obj) {
return _json2xml(‘xml’, obj).replace(‘xml’, ‘?xml version=”1.0″ encoding=”UTF-8″ ?’);
function _json2xml(key, obj) {
var xml = ”;
if (Array.isArray(obj)) {
for (var i = 0; i obj.length; ++i) {
xml += _json2xml(key, obj[i]);
}
return xml;
} else if (typeof obj === ‘object’) {
for (var _key in obj) {
xml += _json2xml(_key, obj[_key]);
}
return _concat(key, xml);
} else {
return _concat(key, obj);
}
}
function _concat(key, item) {
return ” + key + ” + item + ‘/’ + key + ”;
}
}
json和xml的區別
JOSN:JSON是結構化數據串列化的文本格式。它衍生自Javascript的對象實字,這定義在ECMAScript語言標準第三版中。JSON能夠描述四種簡單的類型(字元串、數字、布爾值及null)和兩種結構化類型(對象及數組)。字元串(string)是零個或多個Unicode字元的序列。對象(object)是無次序的零個或多個名/值(name/value)對的集合,這裡的name是string類型,value則可以是string、number、boolean、null、object或array類型。數組(array)是零個或多個value的有序序列。”object”和”array”這兩個術語來自JavaScript規範。JSON的設計目標是使它成為小的、輕便的、文本的,而且是JavaScript的一個子集。
XML:XML是EXtensible
Markup
Language的縮寫
XML是一種類似於HTML的標記語言
XML是用來描述數據的
XML的標記不是在XML中預定義的,你必須定義自己的標記
XML使用文檔類型定義(DTD)或者模式(Schema)來描述數據
XML使用DTD或者Schema後就是自描述的語言
XML是用來存放數據的
XML不是HTML的替代品,XML和HTML是兩種不同用途的語言。
HTML是與顯示信息相關的,
XML則是與描述信息相關的。
「XML」是用於網路上數據交換的語言,具有與描述Web頁面的「HTML」語言相似的格式。該語言有「可以利用Web瀏覽器進行數據確認」以及「易於生成數據」等優點,因此主要用於在企業之間,或者在企業內部更加方便地進行數據交換和利用。首先為了便於理解,下面假設有這麼一種情況:某圖書銷售商要著手建立自己的站點,並發送書店裡的品種目錄和庫存情況等信息。
然而,「XML」則正是能夠讓計算機也理解這些數據屬性的技術。
如果使用XML,比如「庫存目前有多少?」以及「某個作家寫的書賣了多少冊?」等數據就能夠由計算機「自動地」掌握,並能夠將這些數據與交易對象「共享」。這樣一來,出版社就能夠在制定今後的出版計劃時參考這些數據,而且銷售公司制定有效的配送計劃時也將更加容易。這就必定大大有助於削減人事成本,以及提高管理效率。
當然,即便不使用XML,比如,如果能夠建立一個規範的資料庫,並為每個欄位定義一個「書名」和「定價」等名稱,計算機也能夠理解。但是要想在Web上實現這一點,卻要花費相當的人力和成本。在這一點上,如果是XML,由於「能夠利用Web瀏覽器對數據進行確認「,因此只要擁有能夠連接網際網路的計算機和支持XML的瀏覽器,就不需再進行特別的投資。
使用XML,還能夠將在以前的資料庫中難以處理的數據轉化成資料庫。
XML的描述方式與HTML相同,利用被括弧括起來的字元串進行描述。在HTML中,括弧內所定義的都是版面(Layout)等信息。而XML則同時定義了數據的屬性,比如剛才提到的圖書,就是以、和等方式定義。像這樣的定義方式可以自由設置。因此,甚至有不少企業自己定義XML,然後將其用於本公司內部的數據交換。自由度如此之高也是XML受到極大關注的原因之一。
但是,企業之間的數據交換才是XML的著眼點之一。因此,各公司的定義如果不規範化就無法通用。目前,以微軟為主的標準化團體「Biztalk.org」和民間團體「Rosetta
Net」等都希望能針對各行業和領域制定「可以廣泛利用的標誌」,以減少定義XML的麻煩。
這一點在管理方面也可以說是一個巨大的可取之處
js對象和json的區別
JSON (JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。 JSON 是 JavaScript 原生格式,這意味著在JavaScript 中處理 JSON 數據不需要任何特殊的 API 或工具包。JSON的規則很簡單: 對象是一個無序的「名稱/值」對集合。一個對象以「{」(左括弧)開始,「}」(右括弧)結束。每個「名稱」後跟一個「:」(冒號);「名稱/值」對之間使用「,」(逗號)分隔。
它是一種嚴格的js對象的格式,JSON的屬性名必須有雙引號,如果值是字元串,也必須是雙引號;
JSON只是一種數據格式(或者叫數據形式);
scriptvar obj2={};//這只是JS對象var obj3={width:100,height:200};/*這跟JSON就更不沾邊了,只是JS的 對象 */var obj4={‘width’:100,’height’:200};/*這跟JSON就更不沾邊了,只是JS的對象 */var obj5={“width”:100,”height”:200,”name”:”rose”}; /*我們可以把這個稱做:JSON格式的JavaScript對象 */var str1='{“width”:100,”height”:200,”name”:”rose”}’;/*我們可以把這個稱做:JSON格式的字元串 */var a=[ {“width”:100,”height”:200,”name”:”rose”}, {“width”:100,”height”:200,”name”:”rose”}, {“width”:100,”height”:200,”name”:”rose”}, ]; /*這個叫JSON格式的數組,是JSON的稍複雜一點的形式 */var str2='[‘+ ‘{“width”:100,”height”:200,”name”:”rose”},’+ ‘{“width”:100,”height”:200,”name”:”rose”},’+ ‘{“width”:100,”height”:200,”name”:”rose”},’+ ‘]’ ; /* 這個叫稍複雜一點的JSON格式的字元串 *//script
JSON和JS對象區別對比表
json數據格式和xml數據格式的區別和用法是什麼?
JSON與XML的區別:
1 、可讀性。JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規範的標籤形式,很難分出勝負。
2、可擴展性。XML天生有很好的擴展性,JSON當然也有,沒有什麼是XML能擴展,JSON不能的。不過JSON在Javascript主場作戰,可以存儲Javascript複合對象,有著xml不可比擬的優勢。
3、編碼難度。XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無工具的情況下,相信熟練的開發人員一樣能很快的寫出想要的xml文檔和JSON字元串,不過,xml文檔要多很多結構上的字元。
用法:JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。XML可以做為一個公共的標準格式為不同格式之間提供統一介面。
數據格式(data format)是描述數據保存在文件或記錄中的規則。可以是字元形式的文本格式,或二進位數據形式的壓縮格式。
字元形式的文本格式佔用的存貯空間多但透明度高,二進位數形式的壓縮格式佔用的存貯空間少但缺少透明度。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303230.html