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中的deferred使用方法
Mar 27 jQuery
Jquery中attr与prop的区别详解
May 27 jQuery
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
Jun 09 jQuery
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
jqueryUI tab标签页代码分享
Oct 09 jQuery
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
jQuery实现的卷帘门滑入滑出效果【案例】
Feb 18 jQuery
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
jQuery中getJSON跨域原理的深入讲解
Sep 02 jQuery
jQuery实现影院选座订座效果
Apr 13 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
mysql+php分页类(已测)
2008/03/31 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
Python实现合并两个有序链表的方法示例
2019/01/31 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python 实现IP子网计算
2021/02/18 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
上课迟到检讨书
2014/01/19 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
卫生巾广告词
2014/03/18 职场文书
党员干部承诺书范文
2014/03/25 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
董事长助理岗位职责
2015/02/11 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
以下牛机,你有几个
2022/04/05 无线电
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang