xml字符串转xml对象,xml对象转json对象
xml字符串转xml对象:
function loadXml(str) {if (str == null) {return null;}var doc = str;try{doc = createXMLDOM();doc.async = false;doc.loadXML(str);}catch(e){doc = $.parseXML(str);}return doc; }
/** *xml对象转json对象 *xmlObj:xml对象 *nodename:节点路径('ROOT/ITEM') *isarray:true,强制返回数组对象 **/ function xmltojson(xmlObj,nodename,isarray){var obj=$(xmlObj);var itemobj={};var nodenames="";var getAllAttrs=function(node){//递归解析xml 转换成json对象var _itemobj={};var notNull=false;var nodechilds=node.childNodes;var childlenght=nodechilds.length;var _attrs=node.attributes;var firstnodeName="#text";try{firstnodeName=nodechilds[0].nodeName;}catch(e){}if((childlenght>0&&firstnodeName!="#text")||_attrs.length>0){var _childs=nodechilds;var _childslength=nodechilds.length;var _fileName_="";if(undefined!=_attrs){var _attrslength=_attrs.length;for(var i=0; i<_attrslength; i++){//解析xml节点属性var attrname=_attrs[i].nodeName;var attrvalue=_attrs[i].nodeValue;_itemobj[attrname]=attrvalue;}}for (var j = 0; j < _childslength; j++) {//解析xml子节点var _node = _childs[j];var _fildName = _node.nodeName;if("#text"==_fildName){break;};if(_itemobj[_fildName]!=undefined){//如果有重复的节点需要转为数组格式if(!(_itemobj[_fildName] instanceof Array)){var a=_itemobj[_fildName];_itemobj[_fildName]=[a];//如果该节点出现大于一个的情况 把第一个的值存放到数组中 }}var _fildValue=getAllAttrs(_node);try{_itemobj[_fildName].push(_fildValue);}catch(e){_itemobj[_fildName]=_fildValue;_itemobj["length"]=1;}}}else{_itemobj=(node.textContent==undefined)?node.text:node.textContent;}return _itemobj;};if(nodename){nodenames=nodename.split("/")}for(var i=0;i<nodenames.length;i++){obj=obj.find(nodenames[i]);}$(obj).each(function(key,item){if(itemobj[item.nodeName]!=undefined){if(!(itemobj[item.nodeName] instanceof Array)){var a=itemobj[item.nodeName];itemobj[item.nodeName]=[a];}itemobj[item.nodeName].push(getAllAttrs(item));}else{if(nodenames.length>0){itemobj[item.nodeName]=getAllAttrs(item);}else{itemobj[item.firstChild.nodeName]=getAllAttrs(item.firstChild);}}});if(nodenames.length>1){itemobj=itemobj[nodenames[nodenames.length-1]];}if(isarray&&!(itemobj instanceof Array)&&itemobj!=undefined){itemobj=[itemobj];}return itemobj; };
使用方法:
var xmlstr="<USERS>" +"<USER state='0'>" +"<USERNAME type='String'>张三</USERNAME>" +"<USERID type='String'>00001</USERID>" +"</USER>" +"<USER state='1'>" +"<USERNAME type='String' size='100'>李四</USERNAME>" +"<USERID>00002</USERID>" +"</USER>" +"<USER>" +"<USERNAME>李四</USERNAME>" +"<USERID>00002</USERID>" +"</USER>" +"</USERS>"; var xmlobj=loadXml(xmlstr);
xmltojson(xmlobj);//返回结果如下
{"USERS": {"USER": [{"state": "0","USERNAME": {"type": "String"},"length": 1,"USERID": {"type": "String"}},{"state": "1","USERNAME": {"type": "String","size": "100"},"length": 1,"USERID": "00002"},{"USERNAME": "李四","length": 1,"USERID": "00002"}],"length": 1} }
(2)xmltojson(xmlobj,'USERS/USER',true);返回结果如下:
[{"state": "0","USERNAME": {"type": "String"},"length": 1,"USERID": {"type": "String"}},{"state": "1","USERNAME": {"type": "String","size": "100"},"length": 1,"USERID": "00002"},{"USERNAME": "李四","length": 1,"USERID": "00002"} ]
PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
在线格式化XML/在线压缩XML:
http://tools.jb51.net/code/xmlformat
XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress
XML代码在线格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat
转载于:https://www.cnblogs.com/zhidong123/p/6994356.html
xml字符串转xml对象,xml对象转json对象相关推荐
- java封装对象数组_java解析JSON对象和封装对象的示例
在本例中java解析JSON对象使用的是org.json,因此,如果各位想测试我的代码,请先确保有java.json.jar包,否则,就需要去网上下载这个jar包,然后才可以正常使用本代码. 本例的功 ...
- android读取xml 字符串,Android 读取本地Xml文件,并转换成String
问题 不是解析本地 xml 文件, 而是要将 xml 文件中的所有内容(包含格式,标签等),直接转换成 String. 与前端H5页面交互时, iOS 在请求远程 xml 文件耗时太长(有时需要4~5 ...
- c语言xml字符串,C语言的XML解析器
expat和libxml2的两个示例. 第二个是恕我直言,易于使用,因为它在内存中创建了一个树,一个数据易于使用的结构. 另一方面,移民不需要构建任何东西(您必须自己做),它只允许您在解析期间在特定事 ...
- java 解析xml字符串的_java 解析xml字符串
在做第三方接口测试的时候很容遇到接口返回的数据类型是xml串.把我解决问题的方法记录下来,供参考. 需要引入dom4j的jar包: package com.test; import java.util ...
- java 解析 json 索引对象_怎么获取json对象的属性和值
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript(Standard ECMA-262 ...
- java json转换xml格式_在Java中将JSON对象转换为XML格式?
JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...
- 将json对象输出为xml文件
一.pom中引入jdom依赖 <dependency><groupId>org.jdom</groupId><artifactId>jdom</a ...
- 【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性、子节点 | 将封装的节点数据转为 Xml 字符串 )
文章目录 一.构造 Xml 节点类 1.封装节点名称.节点值.节点属性.子节点 2.将封装的节点数据转为 Xml 字符串 二.Xml 节点类完整代码 一.构造 Xml 节点类 生成 Xml 数据前 , ...
- python解析xml存入字典_如何将xml字符串转换为字典?
这是网站上的代码,以防链接出错.from xml.etree import cElementTree as ElementTree class XmlListConfig(list): def __i ...
- 十分钟搞懂JSON(JSON对象---JSON字符串---对象 之间的区别)
好记性不如烂笔头,相信我,看了之后你会彻底搞懂JSON 前言:前天被JSON对象,JSON字符串,JAVA对象搞混了,不知道各自代表的意思,我就查了资料,总结为一篇博文. 另外我想List<Us ...
最新文章
- PHP 设计模式系列 —— 资源库模式(Repository)
- 区块链开发_以太坊多重签名
- 【神经网络】线性模型非线性模型,感知机与神经网络
- java面向对象高级分层实例_数据库操作类
- 树——平衡二叉树插入和查找的JAVA实现
- MySQL系列之E-1------MySQL主从复制原理
- docker 镜像开机自启动_Docker常用命令总结
- JavaSceipt核心语法——运算符
- Linux使用jstat命令查看jvm的GC情况(转)
- (转)泊松分布和指数分布:10分钟教程
- ubuntu 安装 mysql debug_ubuntu 安装phpstorm+xdebug 动态调试环境
- 什么是Servlet容器?
- 使用Pytorch实现UCF101视频分类
- 北京圣思园XML培训视频教程下载
- Fortran的全局变量(Common blocks)
- 二月(不积跬步无以至千里)
- Web Scraper爬取信息
- C语言修改dos窗口的大小
- 极速office(Word)怎么调出标尺
- DFRobot离线语音识别模块真实测评
热门文章
- js 生成二维码_Node for Max 二维码生成器
- 软件测试英语笔试,软件测试英文面试笔试题
- php双线切换线路,双线路策略路由和脚本备份切换
- Failed to resolve loader: less-loader
- 利用Linux搭建SVN服务器,详细过程
- retext代码高亮_实例简介Markdown格式
- h5跳转小程序页面url_微信小程序页面跳转方法
- jquery ajax实例get,jQuery中ajax的get()方法用法实例
- es6删除数组某项_javascript基础系列:数组常用方法解析
- 怎么在html中加入相对链接,html直接跳转超链接 html中怎么实现同一页面超级链接...