JavaScript Read And Show XML Data (2)


因和網友的程式交談,所以將忘記了的東西找了回來.拍謝 A_A…記錄一下
補充 : 修正 FireFox 不停載入問題,和支援 FireFox

測試的 XML 資料 :

1
2
3
4
5
<?xml version="1.0" encoding="big5"?>
<channel>
<book id="001" name="天使與我" money="200" author="什麼" />
<book id="002" name="無名無份" money="300" author="東東" />
</channel>

JavaScript 的代碼 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<script language="javascript" type="text/javascript">
var xmlDoc;

function loadXML(xmlFile) {
if (window.ActiveXObject) {

xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async=false;
if (xmlDoc.load(xmlFile)) {
xmlDoc.load(xmlFile);
showFileData();
}else{
alert('無法載入檔案');
}

}else if (document.implementation && document.implementation.createDocument) {

xmlDoc = document.implementation.createDocument("","",null);

if (xmlDoc.load(xmlFile)) {
xmlDoc.load(xmlFile);
}else{
alert('無法載入檔案');
}
xmlDoc.onload=showFileData;

} else {
alert('對不起,你的瀏覽器不支援此程式');
}
}

function getAttributes(elm, row, k) {
return k == 'value' ? elm.attributes.item(row).value : elm.attributes.item(row).name;
}

//
function showFileData() {
var oldtitle = document.title;
var channel = xmlDoc.getElementsByTagName("channel")[0];
var books = channel.getElementsByTagName('book');
var bookslen = books.length;

var subName = ["識別","名稱","金錢","作者"];

document.open();

// 循環讀取所有書的資料
for(var i=0; i<bookslen; i++){
var sub = books.item(i).attributes.length;

// 列出名稱
for(var j=0; j<sub; j++) {
document.write("<b>" + subName[j] + "</b>");
document.write(" -> ");
document.write(getAttributes(books.item(i), j, 'name'));
document.write(" -> ");
document.write(getAttributes(books.item(i), j, 'value'));
document.write("<br />");

document.write((j % 4 == 3 ? "<hr />" : ""));
}
}
document.close();
}

loadXML('book.xml');
</script>