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插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
简单实现jQuery手风琴效果
Aug 18 jQuery
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
jquery实现左右轮播切换效果
Jan 01 jQuery
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 jQuery
jQuery实时统计输入框字数及限制
Jun 24 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
PHP 数组遍历顺序理解
2009/09/09 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php数组转成json格式的方法
2015/03/09 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
js对象的比较
2011/02/26 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
python 解析html之BeautifulSoup
2009/07/07 Python
详解python单例模式与metaclass
2016/01/15 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
Django与JS交互的示例代码
2017/08/23 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
python2 对excel表格操作完整示例
2020/02/23 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
python logging通过json文件配置的步骤
2020/04/27 Python
Python如何在bool函数中取值
2020/09/21 Python
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
Java程序员面试题
2016/09/27 面试题
幼儿园保育员责任书
2014/07/22 职场文书
支部书记四风对照材料
2014/08/28 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android