艾思软件-app开发公司

山东艾思软件科技有限公司, APP定制开发, 专注ERP/OA办公系统开发

博客园 首页 新随笔 联系 订阅 管理

用jquery遍历xml网上已经有很多, 但是看了好多文章, 对于不指定属性名称的遍历方法却没有

研究了一下, 好像jquery没有attributes. 还是要借助于原生态的JS

以下是JS代码(2012/12/15加了简单注释)

<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>

 

广告: Web程序开发 www.aisisoft.com.cn

posted on 2012-12-14 19:16  临沂小程序开发-艾思  阅读(7498)  评论(0编辑  收藏  举报