这次给大家带来如何使用jquery遍历xml节点与属性,使用jquery遍历xml节点与属性的注意事项有哪些,下面就是实战案例,一起来看一下。
用jquery遍历xml网上已经有很多, 但是看了好多文章, 对于不指定属性名称的遍历方法却没有
研究了一下, 好像jquery没有attributes. 还是要借助于原生态的js
以下是js代码
<script type="text/javascript" src="js/jquery.min.js"></script>
<p id="c"></p>
<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>
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
怎样进行js内dom节点使用
怎样使用js实现缓冲运动
以上就是如何使用jquery遍历xml节点与属性的详细内容。