JavaScript加载XML文件,并解析为JSON对象
2011-04-25 13:06
471 查看
JavaScript加载XML文件,并解析为JSON对象
首先是加载XML文件代码,并返回XML文档对象:
这段代码来自天空的博客
把XML对象转换成JSON对象代码:
这段JS代码和XML代码都来自davidwalsh的博客.
XML测试文件代码:
调用代码:
最终返回的字符串是:
首先是加载XML文件代码,并返回XML文档对象:
这段代码来自天空的博客
function loadXMLDOC(xmlURL) { var xmlDoc; try{ //IE,创建空的微软 XML 文档对象 xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); }catch(e){ try{ //FF,创建空的 XML 文档对象 xmlDoc=document.implementation.createDocument("","",null); }catch(e){ alert(e.message); } } try{ //关闭异步加载,可确保在文档完整加载之前,解析器不会继续执行脚本 xmlDoc.async=false; //加载XML文档 xmlDoc.load(xmlURL); }catch(e){ alert(e.message); return false; } return xmlDoc; }
把XML对象转换成JSON对象代码:
这段JS代码和XML代码都来自davidwalsh的博客.
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; }
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"/> <LINKSIN NUM="1102"/> <SPEED TEXT="1421" PCT="51"/> </SD> <SD> <POPULARITY URL="davidwalsh.name/" TEXT="7131"/> <REACH RANK="5952"/> <RANK DELTA="-1648"/> </SD> </ALEXA>
调用代码:
var myxmlDoc = loadXMLDOC('test.xml'); var jsonText = JSON.stringify(xmlToJson(myxmlDoc)); document.write(jsonText);
最终返回的字符串是:
{ "ALEXA":{ "@attributes":{ "VER":"0.9", "URL":"davidwalsh.name/", "HOME":"0", "AID":"=" }, "SD":[{ "@attributes":{ "TITLE":"A", "FLAGS":"", "HOST":"davidwalsh.name" }, "TITLE":{ "@attributes":{ "TEXT":"David Walsh Blog:PHP, MySQL,CSS,Javascript,MooTools" } }, "LINKSIN":{ "@attributes":{ "NUM":"1102" } }, "SPEED":{ "@attributes":{ "TEXT":"1421", "PCT":"51" } } },{ "POPULARITY":{ "@attributes":{ "URL":"davidwalsh.name/", "TEXT":"7131" } }, "REACH":{ "@attributes":{ "RANK":"5952" } }, "RANK":{ "@attributes":{ "DELTA":"-1648" } } }] } }
相关文章推荐
- 原生的javascript用XMLHttpRequest对象载入json文件
- javascript解析xml和json等
- 用DOM4J来把XML文件转成JSON对象
- 自制JSON解析库C++(一)--对JavaScript对象的理解
- JSON简要介绍以及使用JavaScript解析JSON文件
- Java 中对象转XML,JSON解析,JSON转XML相关包
- Android -使用DOM(文档对象模型)解析XML文件
- 异步加载封装结果为xml数据,xsl文件解析xml数据显示在指定的div中
- JavaScript解析Json中的对象
- Android从xml加载到View对象过程解析
- [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))
- Java 将对象解析成xml 文件
- 在HTML 中通过javascript解析XML文件
- JSON对象解析为JavaScript对象
- responseXML 属性 如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性: 请求 books.xml 文件,并解析响应:
- 使用Java解析xml文件为json格式
- XML文件和JSON文件的解析及生成
- javascript解析ajax返回的xml和json格式数据实例详解
- WebGL 加载模型时,javascript 解析结果的调试转成 JSON 查看确认数组结构
- android解析服务器传来的xml文件和json文件(一)