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实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 jQuery
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
webpack写jquery插件的环境配置
Dec 21 jQuery
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 jQuery
jquery分页插件pagination使用教程
Oct 23 jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
如何使用Jquery动态生成二级选项列表
Feb 06 jQuery
jquery向后台提交数组的代码分析
Feb 20 jQuery
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 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地址引用(php地址引用的效率问题)
2012/03/23 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
python表格存取的方法
2018/03/07 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
优秀员工个人的自我评价
2013/11/29 职场文书
清洁工岗位职责
2014/01/29 职场文书
暑期社会实践感言
2014/02/25 职场文书
yy生日主持词
2014/03/20 职场文书
森林病虫害防治方案
2014/06/02 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
入股合作协议书
2014/10/12 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
四则混合运算教学反思
2016/02/23 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers