jquery遍歷Xml. 包括節點和屬性


用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程序開發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM