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 Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
jquery实现搜索框功能实例详解
Jul 23 jQuery
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
jquery的$().each和$.each的区别
Jan 18 jQuery
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 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报表之jpgraph柱状图实例代码
2011/08/22 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
php header函数的常用http头设置
2015/06/25 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
js实现表单检测及表单提示的方法
2015/08/14 Javascript
关于JS中二维数组的声明方法
2016/09/24 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
python 循环遍历字典元素的简单方法
2016/09/11 Python
python爬虫的工作原理
2017/03/05 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
HashMap和Hashtable的区别
2013/05/18 面试题
Ibatis如何调用存储过程
2015/05/15 面试题
餐饮管理自我介绍信
2014/01/15 职场文书
投资合作协议书范本
2014/04/17 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
文明好少年事迹材料
2014/08/19 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
python playwrigh框架入门安装使用
2022/07/23 Python