javascript 将xml字符串转换成json对象
2015-12-21 19:03
791 查看
xml字符串转换,首先要把字符串转换成dom对象,再从dom对象里获取你要的参数,可用getElementsByTagName之类的方法。以下是2个xml字符串转成dom对象的方法
方法1:
方法二
解析数据:
测试数据:
方法1:
loadXML: function(xmlString) { var xmlDoc = null; try //Internet Explorer { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(xmlString); } catch (e) { try //Firefox, Mozilla, Opera, etc. { parser = new DOMParser(); xmlDoc = parser.parseFromString(xmlString, "text/xml"); return xmlDoc; } catch (e) { return; } } return xmlDoc; }
方法二
loadXML: function(xmlString) { var xmlDoc = null; //判断浏览器的类型 //支持IE浏览器 if (!window.DOMParser && window.ActiveXObject) { //window.DOMParser 判断是否是非ie浏览器 var xmlDomVersions = ['MSXML.2.DOMDocument.6.0', 'MSXML.2.DOMDocument.3.0', 'Microsoft.XMLDOM']; for (var i = 0; i < xmlDomVersions.length; i++) { try { xmlDoc = new ActiveXObject(xmlDomVersions[i]); xmlDoc.async = false; xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串 break; } catch (e) {} } } //支持Mozilla浏览器 else if (window.DOMParser && document.implementation && document.implementation.createDocument) { try { /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。 * 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法 * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型 * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。 */ domParser = new DOMParser(); xmlDoc = domParser.parseFromString(xmlString, 'text/xml'); } catch (e) {} } else { return null; } return xmlDoc; }
解析数据:
xml2Json: function(xmlString) { var xmlDoc = this.loadXML(xmlString), root = xmlDoc.firstChild, obj = {}; if (root && root.children && root.children.length > 0) { //以下解析参数步骤等可根据自己xml做修改 for (var i = 0; i < root.children.length; i++) { var child = root.children[i], attributes = child.attributes, tagName = child.tagName; var value = child.textContent; if (attributes[0] && attributes[0].nodeName == 'T') { if (attributes[0].nodeValue == 'N') { //number value = parseFloat(value); } else if (attributes[0].nodeValue == 'T') { //time value = new Date(value); } } obj[tagName] = value; } } return obj; }
测试数据:
"<?xml version="1.0" encoding="UTF-8"?> <ROOT T="O" N="5" AM_VER="2"> <startTime T="T">2015-12-04 03:20:00</startTime> <startIndex T="N">1</startIndex> <endIndex T="N">1000</endIndex> <type T="N">1</type> <endTime T="T">2015-12-06 03:20:00</endTime> </ROOT> "
相关文章推荐
- 关于JS中的JSON
- html css js
- js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
- js中奇怪的问题 同步ajax,modal遮罩层
- js window.onload 加载多个函数和追加函数
- Ext.js5表单—有真实的load,submit行为的表单(reader在json.xml中record的区别)(49)
- Javascript如何实现无限级菜单联动实例
- 关于分页,显示分页的页数<初学者心得,大神绕道>
- js中return的用法
- javascript 多图无缝切换
- JS实现下拉列表显示当前日期到之前半年的所有日期
- jsp学习
- JS日期时间类型(Y-m-d H:i:s)与时间戳互转
- javaweb开发-js代码中的function.call的参数
- 身份证校验js,包括了第18位数字的校验
- json的NSData 转换成NSDictionary
- js实现仿微博滚动显示信息的效果
- excle转json
- js解决两个数相加的问题
- Ext.js5表格—多列的表格(比fieldcontainer布局效率很多)(48)