XML形式のファイルを読み込む

説明

D3.jsでXML形式のファイルを読み込むには、d3.xml()メソッドを使います。最初のパラメーターに読み込むXML形式のファイルのパスを指定します。2番目のパラメーターにはMIMEタイプを指定します。XMLの場合は"application/xml"を指定します。最後のパラメーターには読み込んだデータを処理するための関数を指定します。関数にはエラーとXMLデータのルート要素が渡されます。XMLデータを読み出すには渡されたルート要素から必要な要素を取り出すメソッドやプロパティを利用します。サンプルの場合、getElementsByTagName()メソッドを使って表示する各要素を取り出し、その要素内に含まれる内容はnodeValueプロパティを参照することで読み出し表示しています。

サンプル [サンプルを実行する] [サンプルをダウンロード]

HTMLソース

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>D3.js サンプル</title>
<link rel="stylesheet" href="css/main.css">
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
<body>
<h1>D3.jsサンプル</h1>
<div id="result"></div>
<script src="js/sample.js"></script>
</body>
</html>

JavaScriptコード

d3.xml("data/data.xml", "application/xml", function(error, xmlRoot){
	var place = xmlRoot.getElementsByTagName("place");
	var text = "";
	for(var i=0; i<place.length; i++){	// placeタグの数だけ処理
		var item = place[i].getElementsByTagName("item");
		var sales = place[i].getElementsByTagName("sales");
		text += item[0].firstChild.nodeValue + " : "+sales[0].firstChild.nodeValue+"<br>";
	}
	d3.select("#result").html(text);
});

data.txtファイルの内容

<data>
<place>
<item>a</item>
<sales>10</sales>
</place>
<place>
<item>b</item>
<sales>20</sales>
</place>
<place>
<item>c</item>
<sales>50</sales>
</place>
<place>
<item>d</item>
<sales>6</sales>
</place>
<place>
<item>e</item>
<sales>80</sales>
</place>
<place>
<item>f</item>
<sales>33</sales>
</place>
<place>
<item>g</item>
<sales>42</sales>
</place>
<place>
<item>h</item>
<sales>72</sales>
</place>
<place>
<item>i</item>
<sales>90</sales>
</place>
<place>
<item>j</item>
<sales>25</sales>
</place>
</data>