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对象相关推荐

  1. java封装对象数组_java解析JSON对象和封装对象的示例

    在本例中java解析JSON对象使用的是org.json,因此,如果各位想测试我的代码,请先确保有java.json.jar包,否则,就需要去网上下载这个jar包,然后才可以正常使用本代码. 本例的功 ...

  2. android读取xml 字符串,Android 读取本地Xml文件,并转换成String

    问题 不是解析本地 xml 文件, 而是要将 xml 文件中的所有内容(包含格式,标签等),直接转换成 String. 与前端H5页面交互时, iOS 在请求远程 xml 文件耗时太长(有时需要4~5 ...

  3. c语言xml字符串,C语言的XML解析器

    expat和libxml2的两个示例. 第二个是恕我直言,易于使用,因为它在内存中创建了一个树,一个数据易于使用的结构. 另一方面,移民不需要构建任何东西(您必须自己做),它只允许您在解析期间在特定事 ...

  4. java 解析xml字符串的_java 解析xml字符串

    在做第三方接口测试的时候很容遇到接口返回的数据类型是xml串.把我解决问题的方法记录下来,供参考. 需要引入dom4j的jar包: package com.test; import java.util ...

  5. java 解析 json 索引对象_怎么获取json对象的属性和值

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript(Standard ECMA-262 ...

  6. java json转换xml格式_在Java中将JSON对象转换为XML格式?

    JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...

  7. 将json对象输出为xml文件

    一.pom中引入jdom依赖 <dependency><groupId>org.jdom</groupId><artifactId>jdom</a ...

  8. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性、子节点 | 将封装的节点数据转为 Xml 字符串 )

    文章目录 一.构造 Xml 节点类 1.封装节点名称.节点值.节点属性.子节点 2.将封装的节点数据转为 Xml 字符串 二.Xml 节点类完整代码 一.构造 Xml 节点类 生成 Xml 数据前 , ...

  9. python解析xml存入字典_如何将xml字符串转换为字典?

    这是网站上的代码,以防链接出错.from xml.etree import cElementTree as ElementTree class XmlListConfig(list): def __i ...

  10. 十分钟搞懂JSON(JSON对象---JSON字符串---对象 之间的区别)

    好记性不如烂笔头,相信我,看了之后你会彻底搞懂JSON 前言:前天被JSON对象,JSON字符串,JAVA对象搞混了,不知道各自代表的意思,我就查了资料,总结为一篇博文. 另外我想List<Us ...

最新文章

  1. PHP 设计模式系列 —— 资源库模式(Repository)
  2. 区块链开发_以太坊多重签名
  3. 【神经网络】线性模型非线性模型,感知机与神经网络
  4. java面向对象高级分层实例_数据库操作类
  5. 树——平衡二叉树插入和查找的JAVA实现
  6. MySQL系列之E-1------MySQL主从复制原理
  7. docker 镜像开机自启动_Docker常用命令总结
  8. JavaSceipt核心语法——运算符
  9. Linux使用jstat命令查看jvm的GC情况(转)
  10. (转)泊松分布和指数分布:10分钟教程
  11. ubuntu 安装 mysql debug_ubuntu 安装phpstorm+xdebug 动态调试环境
  12. 什么是Servlet容器?
  13. 使用Pytorch实现UCF101视频分类
  14. 北京圣思园XML培训视频教程下载
  15. Fortran的全局变量(Common blocks)
  16. 二月(不积跬步无以至千里)
  17. Web Scraper爬取信息
  18. C语言修改dos窗口的大小
  19. 极速office(Word)怎么调出标尺
  20. DFRobot离线语音识别模块真实测评

热门文章

  1. js 生成二维码_Node for Max 二维码生成器
  2. 软件测试英语笔试,软件测试英文面试笔试题
  3. php双线切换线路,双线路策略路由和脚本备份切换
  4. Failed to resolve loader: less-loader
  5. 利用Linux搭建SVN服务器,详细过程
  6. retext代码高亮_实例简介Markdown格式
  7. h5跳转小程序页面url_微信小程序页面跳转方法
  8. jquery ajax实例get,jQuery中ajax的get()方法用法实例
  9. es6删除数组某项_javascript基础系列:数组常用方法解析
  10. 怎么在html中加入相对链接,html直接跳转超链接 html中怎么实现同一页面超级链接...