用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 += " ";
}
//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>
廣告: Web程序開發
