XML形式のデータを読み込み表示する

説明

XMLデータを読み込ませるにはprototype.jsライブラリを利用すると簡単です。Ajax.Request()で読み込むXMLデータのURLを指定します。XMLデータの場合、responseXMLとして読み込むとDOMとなるため各タグ、ノードを手軽に処理することができます。タグはgetElementsByTagName()、ノード処理はchildeNodes、firstChild、lastChildなどDOM関連のメソッドやプロパティを利用することができます。
プログラムではタグをgetElementsByTagName()で取得し、その最初の子ノードの値をnodeValueで読み出しています。読み出したデータをテーブルとしてページ上に表示します。
JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>XML形式のデータを読み込み表示する</h1>
<div id="tableData">データを読み込み中....</div>
</body>
</html>

window.onload = function(){
var msec = (new Date()).getTime();
new Ajax.Request("data.xml", {
method: "get",
parameters: "cache="+msec,
onSuccess:function(httpObj){
var xmlData = httpObj.responseXML;
var winTag = xmlData.getElementsByTagName("windows");
var tbl = "<table border='1'>";
for (var i=0; i<winTag.length; i++){
tbl += "<tr>";
var typ = winTag[i].getElementsByTagName("type")[0];
var price = winTag[i].getElementsByTagName("price")[0];
var note = winTag[i].getElementsByTagName("note")[0];
tbl += "<td>"+typ.firstChild.nodeValue+"</td>";
tbl += "<td>"+price.firstChild.nodeValue+"</td>";
tbl += "<td>"+note.firstChild.nodeValue+"</td>";
tbl +="</tr>";
}
tbl += "</table>";
$("tableData").innerHTML = tbl;
},
onFailure:function(httpObj){
$("tableData").innerHTML = "エラーで読み込めませんでした";
}
});
}