XML 應(yīng)用程序
本節(jié)演示由 HTML 和 JavaScript 構(gòu)建的一個(gè)小型 XML 應(yīng)用程序。
XML 文檔實(shí)例
請(qǐng)看下面這個(gè) XML 文檔 ( "cd_catalog.xml" ),它描述了一個(gè) CD 目錄:
<?xml version="1.0" encoding="ISO-8859-1"?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> . . ... more ... .
復(fù)習(xí):加載 XML 文檔
首先,讓我們復(fù)習(xí)一下之前學(xué)習(xí)過的代碼。
為了加載 XML 文檔,我們使用了與《XML 解析器》那一節(jié)中相同的代碼:
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
在本代碼執(zhí)行后,xmlDoc 成為一個(gè) XML DOM 對(duì)象,可由 JavaScript 訪問。
第一步:在任意 HTML 元素中顯示 XML 數(shù)據(jù)
XML 數(shù)據(jù)可以拷貝到任何有能力顯示文本的 HTML 元素。
下面這段代碼從第一個(gè) <CD> 元素中獲得 XML 數(shù)據(jù),然后在 id="showCD" 的 HTML 元素中顯示數(shù)據(jù):
x=xmlDoc.getElementsByTagName("CD"); i=0; function displayCD() { artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); title=(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue); year=(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue); txt="Artist: " + artist + "<br />Title: " + title + "<br />Year: "+ year; document.getElementById("showCD").innerHTML=txt; }
HTML 的 body 元素包含一個(gè) onload 事件屬性,它的作用是在頁面已經(jīng)加載時(shí)調(diào)用 display() 函數(shù)。body 元素中還包含了供接受 XML 數(shù)據(jù)的 <div id='show'> 元素:
<div id="show"></div> </body>
親自試一試:XML 數(shù)據(jù)如何在 <div> 元素中顯示
本例只能顯示 XML 文檔中第一個(gè) CD 元素中的數(shù)據(jù)。為了導(dǎo)航到數(shù)據(jù)的下一行,我們需要使用更多的代碼。
第二步:添加導(dǎo)航腳本
為了向上例添加導(dǎo)航(功能),需要?jiǎng)?chuàng)建 next() 和 previous() 兩個(gè)函數(shù):
function next() { if (i<x.length-1) { i++; displayCD(); } } function previous() { if (i>0) { i--; displayCD(); } }
next() 函數(shù)確保已到達(dá)最后一個(gè) CD 元素后不顯示任何東西,previous () 函數(shù)確保已到達(dá)第一個(gè) CD 元素后不顯示任何東西。
通過點(diǎn)擊 next/previous 按鈕來調(diào)用 next() 和 previous() 函數(shù):
<input type="button" onclick="previous()" value="previous" /> <input type="button" onclick="next()" value="next" />
親自試一試:如何在 XML 記錄中導(dǎo)航
最后:當(dāng)點(diǎn)擊 CD 時(shí)顯示專輯信息
只需要一點(diǎn)點(diǎn)創(chuàng)新,您就可以創(chuàng)建一個(gè)完整的應(yīng)用程序。
最后的例子展示如何在點(diǎn)擊某個(gè) CD 項(xiàng)目時(shí)顯示專輯信息。