jQuery实现遍历XML节点和属性的方法示例


Posted in jQuery onApril 29, 2018

本文实例讲述了jQuery实现遍历XML节点和属性的方法。分享给大家供大家参考,具体如下:

用jquery遍历xml网上已经有很多, 但是看了好多文章, 对于不指定属性名称的遍历方法却没有

研究了一下, 好像jquery没有attributes. 还是要借助于原生态的JS

以下是JS代码

<script type="text/javascript" src="js/jquery.min.js"></script>
<div id="c"></div>
<script>
//用于缩进, 根据节点级别
var M_DOT = 1;
//递归函数, 用于遍历XML, 同时打印出来
function fn(obj){
  //定义一个变量, 用于缩进
  var dotString = "";
  //根据缩进量, 得到缩进的长度
  for(j = 1; j <= M_DOT; j++){
    dotString += "    ";
  }
  //jquery不支持attributes属性集, 转为原生js, 并赋给myObj变量
  var myObj = obj[0].attributes;
  //打印缩进
  $("#c").append(dotString)
  //打印属性集nodeName, nodeValue为原生JS, 分别表示为属性的名称, 和属性值
  $(myObj).each(function(i){
    $("#c").append( ($(this)[0].nodeName) + "=<u>" + ($(this)[0].nodeValue) + "</u> " );
  })
  //打印节点的文本
  //$("#c").append( "<b>" + obj.text() + "</b><br/>");
  //打印换行
  $("#c").append( "<br/>");
  //判断DOM有无子DOM
  if( obj.length > 0 ){
    //如果有, 遍历之
    obj.children().each(function(i){
      //缩进量加一
      M_DOT++;
      //递归遍历子DOM
      fn($(this));
      //缩进量加一
      M_DOT--;
    })
  }else{
    //如果没有子DOM, 返回false
    return false;
  }
}
//程序入口
$(document).ready(function() {
  //ajax获取xml数据, 详细用法见jquery手册
  $.get('config.xml', function(d){
    //len = $(d).find("*").length;
    //找到xml顶级结点. ('*:first'):就是查找第一个DOM. 详细说明见jquery手册
    //find, children(), each, 以及后面用到的 append 等请查阅jquery手册
    $(d).find('*:first').children().each(function(i){
      //找到顶级结点的子结点, 并把子结点对象传给fn函数
      fn($(this));
    });
  });
});
</script>

附一个XML文件

请取名config.xml放在和以上js同目录下, 并都放在站点中

<?xml version="1.0" encoding="utf-8" ?>
<roster>
  <student ID="s101">
    <name>李华</name>
    <sex>男</sex>
    <birthday>1978.9.12</birthday>
    <score>92</score>
    <skill>Java</skill>
    <skill>Oracle</skill>
    <skill>C Sharp</skill>
    <skill>SQL Server</skill>
  </student>
  <student ID="s107">
    <name>李寻欢</name>
    <sex>男</sex>
    <birthday>1981.4.19</birthday>
    <score>58</score>
    <skill>UML</skill>
    <skill>C Sharp</skill>
    <skill>XML</skill>
    <skill>SQL Server</skill>
  </student>
</roster>
jQuery 相关文章推荐
jQuery鼠标悬停内容动画切换效果
Apr 27 jQuery
jquery与js实现全选功能的区别
Jun 11 jQuery
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
jQuery初级教程之网站品牌列表效果
Aug 02 jQuery
jQuery中库的引用方法
Jan 06 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
jQuery中的for循环var与let的区别
Apr 21 jQuery
20个最常见的jQuery面试问题及答案
May 23 jQuery
jQuery实现的电子时钟效果完整示例
Apr 28 #jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 #jQuery
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 #jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 #jQuery
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 #jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 #jQuery
jQuery length 和 size()区别总结
Apr 26 #jQuery
You might like
关于php fread()使用技巧
2010/01/22 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
Python实现的最近最少使用算法
2015/07/10 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
会计专业应届生求职信
2013/11/24 职场文书
基督教婚礼主持词
2014/03/14 职场文书
厨房管理计划书
2014/04/27 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
大学毕业生个人总结
2015/02/28 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书