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
xml字符串转xml对象,xml对象转json对象的更多相关文章
- JS解析xml字符串,并把xml展示在HTML页面上
首先,要写一个方法,把xml字符串转化成dom对象 //将字符串转化成dom对象;string转换为xml function stringToXml(xmlString) { var xmlDoc; ...
- js 根本没有“JSON对象”这回事! JSON对象——转
前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢. ...
- 使用Gson将对象类转成Json对象时出现\u003d的问题
Gson将对象转成Json对象的方法 Gson gson=new Gson(); String json=gson.toJson(Student.class); 这种情况,如果Student属性中的某 ...
- Java对象或String转JSON对象
Java String转JSON对象 用阿里的fastjson里的一个方法,导入fastjson包JSONObject jsonObject1 =JSONObject.parseObject(Stri ...
- 使用dom4j生成xml字符串,以及解析xml字符串
基于dom4j-1.6.1.jar import java.io.IOException; import java.io.StringWriter; import java.util.ArrayLis ...
- 序列化对象为xml字符串
/// <summary> /// 序列化对象为xml字符串 /// </summary> /// <param name="obj" ...
- .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表
/// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...
- 大话Json对象和Json字符串
一.Json对象和Json字符串的区别 (1)Json对象:可以通过javascript存取属性. 先介绍一下json对象,首先说到对象的概念,对象的属性是可以用:对象.属性进行调用的.例如: var ...
- [转载]将json字符串转换成json对象
例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; J ...
- js 将json字符串转换为json对象的方法解析-转
例如: JSON字符串:var str1 = '{ "name": "cxh", "sex": "man" }'; JS ...
随机推荐
- python接口自动化(四十二)- 项目结构设计之大结局(超详解)
简介 这一篇主要是将前边的所有知识做一个整合,把各种各样的砖块---模块(post请求,get请求,logging,参数关联,接口封装等等)垒起来,搭建一个房子.并且有很多小伙伴对于接口项目测试的框架 ...
- ASIHTTPRequest中文入门教程全集 http://www.zpluz.com/thread-3284-1-1.html
本文转载至 目录 3 第 1 章 创建和运行请求 5 1.1. 创建一个同步请求 5 1.2. 创建一个异步请求 5 1.3. 使用程序块(blocks ) 6 1.4. 使用 ...
- elipse开发环境搭建(Java+C++)
目的:搭建可用于java和C++开发的eclipse开发环境. 步骤: 1.安装JDK(Java Development Kit):JDK包含了java掩饰程序和样例.Java公共API类的源代码.J ...
- Jmeter + Ant + Jenkins 接口/性能测试,持续集成环境搭建
1. 安装Jmeter.jdk Jmeter 3.3版本 :<http://note.youdao.com/noteshare?id=5e3fd287db24d08386207a7de22d26 ...
- 【BZOJ2844】albus就是要第一个出场 高斯消元求线性基
[BZOJ2844]albus就是要第一个出场 Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2 ...
- OpenCV玩耍(一)批量resize一个文件夹里的所有图像
鉴于用caffe做实验的时候,里面牵扯到一个问题是必须将训练集和测试集都转成256*256的图像,而官网给出的代码又不会用,所以我用opencv转了.其实opencv只转一幅图会很简单,关键在于“批量 ...
- 阿里巴巴fastjson 包的使用解析json数据
Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极 ...
- JS表单提交
测试一: function submit(){var form1=document.getElementById("form1")form1.action="/manag ...
- Web Service概念辨析
Web Service包含两个概念. 其一是Web Service标准体系,由SOAP.WSDL.UDDI三要素组成,是平台和语言无关的.在这个概念里和WCF做比较是错误的,因为前者是行业标准,后者是 ...
- ssm框架与shiro的整合小demo,用idea开发+maven管理
shiro安全框架是目前为止作为登录注册最常用的框架,因为它十分的强大简单,提供了认证.授权.加密和会话管理等功能 . shiro能做什么? 认证:验证用户的身份 授权:对用户执行访问控制:判断用户是 ...