XML 應用程序
本章演示使用 XML、HTTP、DOM 以及 JavaScript 的 HTML 應用程序。
使用的 XML 文檔
在本章中,我們將使用名為 "music_list.xml" 的 XML 文件。
在 HTML 表格中顯示 XML 數據
本例遍歷每個 <TRACK> 元素,然后在 HTML 表格中顯示 <ARTIST> 和 <TITLE> 元素的值:
實例
<html> <body> <table id="demo"></table> <script> function loadXMLDoc() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xmlhttp.open("GET", "music_list.xml", true); xmlhttp.send(); } function myFunction(xml) { var i; var xmlDoc = xml.responseXML; var table="<tr><th>藝術家</th><th>曲目</th></tr>"; var x = xmlDoc.getElementsByTagName("TRACK"); for (i = 0; i <x.length; i++) { table += "<tr><td>" + x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue + "</td><td>" + x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "</td></tr>"; } document.getElementById("demo").innerHTML = table; } </script> </body> </html>
如需更多有關使用 JavaScript 和 XML DOM 的信息,請訪問 DOM 簡介。
在 HTML div 元素中顯示第一首曲子
本例使用一個函數在 id="displayMUSIC" 的 HTML 元素中顯示第一首歌曲:
實例
displayMUSIC(0); function displayMUSIC(i) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this, i); } }; xmlhttp.open("GET", "music_list.xml", true); xmlhttp.send(); } function myFunction(xml, i) { var xmlDoc = xml.responseXML; x = xmlDoc.getElementsByTagName("TRACK"); document.getElementById("showMUSIC").innerHTML = "<ul>" + "<li>曲目:" + x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "</li>" + "<li>藝術家:" + x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue + "</li>" + "<li>專輯:" + x[i].getElementsByTagName("ALBUM")[0].childNodes[0].nodeValue + "</li>" + "<li>國家:" + x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "</li>" + "<li>公司:" + x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "</li>" + "<li>年份:" + x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "</li>" + "</ul>"; }
在曲目之間導航
如需在上例中的曲目間導航,請添加 next() 和 previous() 函數:
實例
function next() { // 顯示下一首歌曲,除非已到達最后一首 if (i < x.length-1) { i++; displayMUSIC(i); } } function previous() { // 顯示上一首歌曲,除非已到達第一首 if (i > 0) { i--; displayMUSIC(i); } }
在點擊歌曲時顯示專輯信息
最后這個例子演示當用戶點擊某一首歌曲時如何顯示專輯信息:
實例
function displayMUSIC(i) { document.getElementById("showMUSIC").innerHTML = "<ul>" + "<li>曲目:" + x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "</li>" + "<li>藝術家:" + x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue + "</li>" + "<li>專輯:" + x[i].getElementsByTagName("ALBUM")[0].childNodes[0].nodeValue + "</li>" + "<li>國家:" + x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "</li>" + "<li>公司:" + x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "</li>" + "<li>年份:" + x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "</li>" + "</ul>"; }