jQuery实现遍历XML节点和属性的方法示例

本文实例讲述了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 += "&nbsp;&nbsp;&nbsp;&nbsp;";

}

//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>&nbsp;" );

})

//打印节点的文本

//$("#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>

PS:这里再为大家提供几款关于xml操作相关在线工具供大家参考使用:

在线XML/JSON互相转换工具:

以上是 jQuery实现遍历XML节点和属性的方法示例 的全部内容, 来源链接: utcz.com/z/319157.html

回到顶部