読み込んだXMLのデータをもとにデータを表示する
動作ブラウザ
win | mac | linux |
n7 | m1 | e5 | e6 | o7 | n7 | m1 | e5 | s1 | n7 | m1 | k3 |
○ | ○ | × | ○ | × | ○ | ○ | × | × | ○ | ○ | × |
ソース
【addr.xml】
<?xml version="1.0" encoding="UTF-8" ?>
<アドレス>
<個人 id="1">
<名前>山田太郎</名前>
<住所1>茨城県</住所1>
</個人>
<個人 id="2">
<名前>田中花子</名前>
<住所1>東京都</住所1>
</個人>
<個人 id="3">
<名前>高橋次郎</名前>
<住所1>北海道</住所1>
</個人>
</アドレス>
【addr.htm】
<script type="text/javascript">
<!--
/*==========================================================
//クロスブラウザ load関数
引数 : url XMLファイルのurl
func 読み込み成功時の起動関数名
戻値 : 読み込まれたXMLノードツリー
例 : loadFile( 'data.xml', func1 )
function func1(){alert('test')}
Support http://game.gr.jp/js/
*/
function loadFile(url,func)
{
if (window.ActiveXObject)
{
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false
if(xmlDoc.load(url)){func(xmlDoc)}
} else if ( document.implementation &&
document.implementation.createDocument )
{
var xmlDoc = document.implementation.createDocument("","",null)
xmlDoc.onload = function (){func(xmlDoc)}
xmlDoc.load(url)
}
return xmlDoc
}
//読み込んだXMLのデータをもとにHTMLへ書き出す
function writeXMLData(xdoc)
{
//XML内の"個人"という名前のタグの配列を作る
var kojin = xdoc.getElementsByTagName("個人")
//XML内の"名前"という名前のタグの配列を作る
var name = xdoc.getElementsByTagName("名前")
//XML内の"住所1"という名前のタグの配列を作る
var addr1 = xdoc.getElementsByTagName("住所1")
//書き出すためのdivを作っておく
var wkdiv= document.body.insertBefore(
document.createElement("div"), document.body.firstChild)
//"node"タグが出てきた順に処理する
for( i = 0 ; i < kojin.length ; i++ )
{
html = '<b>' + name[i].firstChild.nodeValue + '</b>'
+ addr1[i].firstChild.nodeValue
//各タグ内のfirstChildのデータだけをinnerHTMLで書き出す
wkdiv.innerHTML += html + '<br>'
}
}
//-->
</script>
<input type = "button"
value = "XML読み込み"
onclick= "loadFile('addr.xml',writeXMLData)">