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.load()和Jsp的include的区别
Apr 12 jQuery
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
jQuery制作input提示内容(兼容IE8以上)
Jul 05 jQuery
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
jQuery 禁止表单用户名、密码自动填充功能
Oct 30 jQuery
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
jQuery实现form表单序列化转换为json对象功能示例
May 23 jQuery
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
jQuery实现html可联动的百分比进度条
Mar 26 jQuery
Jquery Fade用法详解
Nov 06 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程序员应该了解MongoDB的五件事
2013/06/03 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php截取中文字符串函数实例
2015/02/23 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
python端口扫描系统实现方法
2014/11/19 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
对python 调用类属性的方法详解
2019/07/02 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
出纳岗位职责
2013/11/09 职场文书
军训的自我鉴定
2013/12/10 职场文书
兴趣小组活动总结
2014/05/05 职场文书
监督检查工作方案
2014/05/28 职场文书
保安2014年终工作总结
2014/12/06 职场文书
战友聚会致辞
2015/07/28 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
Python中如何处理常见报错
2022/01/18 Python