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插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
Jquery中attr与prop的区别详解
May 27 jQuery
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
详解jQuery中的easyui
Sep 02 jQuery
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
jQuery分组选择器简单用法示例
Apr 04 jQuery
JQuery animate动画应用示例
May 14 jQuery
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
May 14 jQuery
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
基于jQuery拖拽事件的封装
Nov 29 jQuery
jquery实现拖拽小方块效果
Dec 10 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与paypal整合方法
2010/11/28 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
vue如何判断dom的class
2018/04/26 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
高中生学习生活的自我评价
2013/11/27 职场文书
考试退步检讨书
2014/01/15 职场文书
霸王洗发水广告词
2014/03/14 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技