XML 應用程序
本節(jié)演示由 HTML 和 JavaScript 構建的一個小型 XML 應用程序。
XML 文檔實例
請看下面這個 XML 文檔 ( "cd_catalog.xml" ),它描述了一個 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 ...
.
復習:加載 XML 文檔
首先,讓我們復習一下之前學習過的代碼。
為了加載 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 成為一個 XML DOM 對象,可由 JavaScript 訪問。
第一步:在任意 HTML 元素中顯示 XML 數(shù)據
XML 數(shù)據可以拷貝到任何有能力顯示文本的 HTML 元素。
下面這段代碼從第一個 <CD> 元素中獲得 XML 數(shù)據,然后在 id="showCD" 的 HTML 元素中顯示數(shù)據:
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 元素包含一個 onload 事件屬性,它的作用是在頁面已經加載時調用 display() 函數(shù)。body 元素中還包含了供接受 XML 數(shù)據的 <div id='show'> 元素:
<div id="show"></div> </body>
親自試一試:XML 數(shù)據如何在 <div> 元素中顯示
本例只能顯示 XML 文檔中第一個 CD 元素中的數(shù)據。為了導航到數(shù)據的下一行,我們需要使用更多的代碼。
第二步:添加導航腳本
為了向上例添加導航(功能),需要創(chuàng)建 next() 和 previous() 兩個函數(shù):
function next()
{
if (i<x.length-1)
{
i++;
displayCD();
}
}
function previous()
{
if (i>0)
{
i--;
displayCD();
}
}
next() 函數(shù)確保已到達最后一個 CD 元素后不顯示任何東西,previous () 函數(shù)確保已到達第一個 CD 元素后不顯示任何東西。
通過點擊 next/previous 按鈕來調用 next() 和 previous() 函數(shù):
<input type="button" onclick="previous()" value="previous" /> <input type="button" onclick="next()" value="next" />
親自試一試:如何在 XML 記錄中導航