真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用JavaScript怎么將XML與JSON進(jìn)行轉(zhuǎn)換

本文章向大家介紹使用JavaScript怎么將XML與JSON進(jìn)行轉(zhuǎn)換的基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下。

創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為塔河企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,塔河網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

JavaScript是什么

JavaScript是一種直譯式的腳本語言,其解釋器被稱為JavaScript引擎,是瀏覽器的一部分,JavaScript是被廣泛用于客戶端的腳本語言,最早是在HTML網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動(dòng)態(tài)功能。

XML轉(zhuǎn)換成JSON的格式大概如下:

XML形式

 文章標(biāo)題 
 章節(jié)標(biāo)題 

 章節(jié)段落 

JSON表現(xiàn)形式

{
"article": {
"header": {
"#text": "文章標(biāo)題",
"@id": "h2"
},
"section": {
"@id": "s1",
"header": "章節(jié)標(biāo)題",
"p": "章節(jié)段落"
}
}
}

用Js將XML轉(zhuǎn)換成JSON的腳本,在網(wǎng)上找了一些現(xiàn)成的腳本,但大都只滿足比較簡單的情況,都不可以完成保證原始結(jié)構(gòu)的互轉(zhuǎn)。下面是從網(wǎng)上找到的一些腳本或者文章:

x2js  : https://code.google.com/p/x2js/

jsonxml :http://davidwalsh.name/convert-xml-json

JKL.ParseXML :http://www.kawa.net/works/js/jkl/parsexml-e.html

x2js不會(huì)將下面的XML正確還原。

//XML形式

 章節(jié) 

而第2個(gè)腳本jsonxml,在上面這種“文本混合標(biāo)簽”的情況下,沒有將標(biāo)簽提取出來,而是轉(zhuǎn)換成了下面這種格式。

{"p":"章節(jié)"}}

之后我做了些改動(dòng),將它解析成如下格式后,滿足了“文本混合標(biāo)簽”可正確還原的情況。

{"p":[{"strong":"章節(jié)"},"段",{"em":"落"}]}

另外,形如下面的代碼,使用上文提到的腳本進(jìn)行轉(zhuǎn)換,也會(huì)導(dǎo)致無法正確還原的情況。

  第一節(jié)    標(biāo)題    第二節(jié)

同樣,在一個(gè)標(biāo)簽內(nèi),它的子標(biāo)簽出現(xiàn)了大于一次,如果需要記錄數(shù)據(jù)的路徑,應(yīng)該使用數(shù)組來保存這個(gè)結(jié)構(gòu)。正確的代碼應(yīng)該是:

{
  "article": [ {
  "section": {
  "#text": "第一節(jié)",
  "@id": "s1"
  },
  }, {
  "header": {
  "#text": "標(biāo)題",
  "@id": "h2"
  }
  }, {
  "section": {
  "#text": "第一節(jié)",
  "@id": "s2"
  }
  }
  ]
}

jkl.parsexml



 
  10036
  NY
  New York
  Broadway
 

SAMPLE SCRIPT:


OUTPUT JSON:

{
 items: {
  item: {
   zip_cd: "1000001"
   us_state: "NY",
   us_city: "New York",
   us_dist: "Broadway",
  }
 }
};

jsonxml

// 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].push) == "undefined") {
   var old = obj[nodeName];
   obj[nodeName] = [];
   obj[nodeName].push(old);
  }
  obj[nodeName].push(xmlToJson(item));
  }
 }
 }
 return obj;
};

The major change I needed to implement was using attributes.item(j) instead of the attributes[j] that most of the scripts I found used.  With this function, XML that looks like:


 
 
 
 
 
 
 
 
 
 

...becomes workable a JavaScript object with the following structure:

{
 "@attributes": {
 AID: "=",
 HOME: 0,
 URL: "davidwalsh.name/",
 VER: "0.9",
 },
 SD = [
 {
  "@attributes": {
  FLAGS: "",
  HOST: "davidwalsh.name",
  TITLE: A
  },
  LINKSIN: {
  "@attributes": {
   NUM: 1102
  }
  },
  SPEED: {
  "@attributes": {
   PCT: 51,
   TEXT: 1421
  }
  },
  TITLE: {
  "@attributes": {
   TEXT: "David Walsh Blog :: PHP, MySQL, CSS, Javascript, MooTools, and Everything Else",
  }
  },
 },
 {
  POPULARITY: {
  "@attributes": {
   TEXT: 7131,
   URL: "davidwalsh.name/"
  }
  },
  RANK: {
  "@attributes": {
   DELTA: "-1648"
  }
  },
  REACH: {
  "@attributes": {
   RANK = 5952
  }
  }
 }
 ]
}

說了半天下面整理了一個(gè)例子

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;
};

以上就是小編為大家?guī)淼氖褂肑avaScript怎么將XML與JSON進(jìn)行轉(zhuǎn)換的全部內(nèi)容了,希望大家多多支持創(chuàng)新互聯(lián)!


名稱欄目:使用JavaScript怎么將XML與JSON進(jìn)行轉(zhuǎn)換
網(wǎng)址分享:http://weahome.cn/article/gchiig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部