热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascriptxml转json

1、代码加载xml数据functionloadXml(str){if(strnull){returnnull;}vardocstr;try{doccreateXMLDOM();do

1、代码

   //加载xml数据function loadXml(str) {if (str &#61;&#61; null) {return null;}var doc &#61; str;try{doc &#61; createXMLDOM();doc.async &#61; false;doc.loadXML(str);}catch(e){doc &#61; $.parseXML(str);}return doc;}//xml数据转成json对象的数据function xmlTojson(xmlObj, nodename, isarray){var obj &#61; $(xmlObj);var itemobj &#61; {};var nodenames &#61; "";var getAllAttrs &#61; function(node){//递归解析xml 转换成json对象var _itemobj &#61; {};var notNull &#61; false;var nodechilds &#61; node.childNodes;var childlenght &#61; nodechilds.length;var _attrs &#61; node.attributes;var firstnodeName &#61; "#text";try{firstnodeName &#61; nodechilds[0].nodeName;}catch(e){}if((childlenght > 0 && firstnodeName !&#61; "#text") || _attrs.length > 0){var _childs &#61; nodechilds;var _childslength &#61; nodechilds.length;var _fileName_ &#61; "";if(undefined !&#61; _attrs){var _attrslength &#61; _attrs.length;for(var i &#61; 0; i <_attrslength; i&#43;&#43;){//解析xml节点属性var attrname &#61; _attrs[i].nodeName;var attrvalue &#61; _attrs[i].nodeValue;_itemobj[attrname] &#61; attrvalue;}}for (var j &#61; 0; j <_childslength; j&#43;&#43;) {//解析xml子节点var _node &#61; _childs[j];var _fildName &#61; _node.nodeName;if("#text" &#61;&#61; _fildName){break;};if(_itemobj[_fildName] !&#61; undefined){//如果有重复的节点需要转为数组格式if(!(_itemobj[_fildName] instanceof Array)){var a &#61; _itemobj[_fildName];_itemobj[_fildName] &#61; [a];//如果该节点出现大于一个的情况 把第一个的值存放到数组中
}}var _fildValue &#61; getAllAttrs(_node);try{_itemobj[_fildName].push(_fildValue);}catch(e){_itemobj[_fildName] &#61; _fildValue;_itemobj["length"] &#61; 1;}}}else{_itemobj &#61; (node.textContent &#61;&#61; undefined) ? node.text : node.textContent;}return _itemobj;};if(nodename){nodenames &#61; nodename.split("/")}for(var i &#61; 0;i ){obj &#61; obj.find(nodenames[i]);}$(obj).each(function(key, item){if(itemobj[item.nodeName] !&#61; undefined){if(!(itemobj[item.nodeName] instanceof Array)){var a &#61; itemobj[item.nodeName];itemobj[item.nodeName] &#61; [a];}itemobj[item.nodeName].push(getAllAttrs(item));}else{if(nodenames.length > 0){itemobj[item.nodeName] &#61; getAllAttrs(item);}else{itemobj[item.firstChild.nodeName] &#61; getAllAttrs(item.firstChild);}}});if(nodenames.length > 1){itemobj &#61; itemobj[nodenames[nodenames.length-1]];}if(isarray && !(itemobj instanceof Array) && itemobj !&#61; undefined){itemobj &#61; [itemobj];}return itemobj;}//实例测试var dataStr &#61; &#39;&#39;var xmlObj &#61; loadXml(dataStr);var jsonData &#61; xmlTojson(xmlObj, &#39;userList/user&#39;, true);console.log(jsonData)

 

2、测试结果

 


转载于:https://www.cnblogs.com/libo0125ok/p/10870195.html


推荐阅读
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
author-avatar
Hmily-西瓜先生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有