使用JavaScript将XML转换为JSON

更新日期: 2020-11-28阅读: 1.3k标签: xml

如果您在JSON上关注我,您就会知道我一直在使用Appcelerator Titanium开发超级机密的移动应用程序。体验非常棒:使用JavaScript创建易于编写,易于测试的本地移动应用程序很有趣。我的移动应用程序连接到许多社交网络api,其中一些仅提供XML响应。我的迷你“框架”使用JSON动态创建小部件,因此我需要一种将XML转换为JSON的方法。我发现了许多解决方案,但没有一个起作用。调整现有功能后,我发现了一个很好的解决方案。


JavaScript

重要的是要指出Titanium的Titanium.XML.domDocument对象实现DOM2级结构。这是神奇的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].push) == "undefined") {
     var old = obj[nodeName];
     obj[nodeName] = [];
     obj[nodeName].push(old);
    }
    obj[nodeName].push(xmlToJson(item));
   }
  }
 }
 return obj;
};

我需要实现的主要更改是使用attributes.item(j)而不是使用attributes[j]我发现的大多数脚本。使用此功能,XML如下所示:

<ALEXA VER="0.9" URL="davidwalsh.name/" HOME="0" AID="=">
 <SD TITLE="A" FLAGS="" HOST="davidwalsh.name">
  <TITLE TEXT="David Walsh Blog :: php, MySQL, css, Javascript, MooTools, and Everything Else"/>
  <LINKSIN NUM="1102"/>
  <SPEED TEXT="1421" PCT="51"/>
 </SD>
 <SD>
  <POPULARITY URL="davidwalsh.name/" TEXT="7131"/>
  <REACH RANK="5952"/>
  <RANK DELTA="-1648"/>
 </SD>
</ALEXA>

成为具有以下结构的JavaScript对象是可行的:

{
 "@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
    }
   }
  }
 ]
}

从这里可以使用JavaScript对象,但您认为合适。如果您想使用JSON字符串格式的JavaScript,可以编写以下代码:

// Assuming xmlDoc is the XML DOM Document
var jsonText = JSON.stringify(xmlToJson(xmlDoc))

此功能在允许我快速忽略XML并改用JSON时非常有用。当构造嵌套子节点的属性和数组时,该函数运行良好。保持方便;在某些时候,您可能需要将XML转换为JSON!


链接: https://www.fly63.com/article/detial/10369

JaveScript 中使用 XSLT转换XML文档

我们经常将数据存储在XML 中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT 对XML数据进行转换。要学习XSLT对XML的转换,需要先了解三个文件。

XML入门教程

XML 指可扩展标记语言(EXtensible Markup Language)。XML不会做任何事情,XML被设计用来结构化、存储以及传输信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

PHP中的XML解析的5种方法

不管是桌面软件开发,还是WEB应用,XML无处不在!然而在平时的工作中,仅仅是使用一些已经封装好的类对XML对于处理,包括生成,解析等。假期有空,于是将PHP中的几种XML解析方法总结如下:

XML基础知识总汇

随着json等一些技术的普及,似乎xml的路子越来越窄,虽然xml的一些功能被其他的一些技术代替,但是学习xml还是非常有必要,如果用xml存储一些大量数据,还是有一定优势的,就算你不管这

xml文件中的XPATH、DTD

XPath 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础

XML处理指令

处理指令(PIs)允许文档包含用于应用程序的指令。指令并不是文档字符数据的一部分,但是必须通过应用程序传递。 处理指令可以用于将信息传递给应用程序。处理指令可以出现在文档任意位置的标记外部。可以出现在序言中

XML可扩展标记语言

XML:可扩展标记语言,XML的标签是没有被定义过的,需要自行定义,宗旨是做数据传递,而不是做数据展示;1、xml文件最顶端做声明2、所有标记必须成对出现(没有单标记)3、严格区分大小写

JSON和XML之间的区别是什么?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它完全独立于语言。它基于JavaScript编程语言,易于理解和生成。XML(可扩展标记语言)旨在传输数据,而不是显示数据。这是W3C的推荐。

javascript如何读取xml?

javascript读取xml的方法:使用DOMParser对象解析XML文本并返回一个XML Document对象。然后调用parseFromString()方法读取。

javascript如何读取xml文件?

JavaScript是一种属于网络的脚本语言,通常通过嵌入在HTML中来实现自身的功能。XML文件格式是纯文本格式,在许多方面类似于HTML,XML由XML元素组成。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!