javascript を使ってXMLファイルの読み込み


<route>
<transportation name="metoro-ochanomizu">
<station>
<trans_name>東京メトロ 丸の内線</trans_name>
<station_name>御茶ノ水駅</station_name>
</station>
</transportation>
</route>

上のXMLを読み込んで、trans_nameタグとsationタグの値を取得したいと考えております。
下のコードで動かすと、FireFoxでは取得できるのですが、IE6.0ではundefinedとなってしまいます。
公開されているライブラリは使わずに実装したく、FireFoxとIEで動作するものを必要としています。

var routemapTag = httpRequest.responseXML.getElementsByTagName("routemap")[0];
for ( r=0; r< routemapTag.childNodes.length; r++){
// 経路一つを取り出す
var transportationTag = routemapTag.childNodes[r];
// 属性を取れなければ空タグだと判断して飛ばす
if ( transportationTag.attributes == null ) {
continue;
}

// stationタグを取り出す
var stationTag =routemapTag .getElementsByTagName("station")[0];
route.trans_name = routemapTag .getElementsByTagName("trans_name")[0].textContent;
route.station_name = routemapTag .getElementsByTagName("station_name")[0].textContent;

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2007/02/27 15:21:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:ofk No.1

回答回数12ベストアンサー獲得回数3

ポイント60pt

http://q.hatena.ne.jp/ URLはダミーです。

routemapが突然出てきて、よくわかりませんが、単純にtextContentをIEがサポートしていないので、動かないのではないのかと思います。

node.textContentを(node.firstChild ? node.firstChild.nodeValue : '')にすればいいかと。

一応、自分のテストコードを晒しておきます。

onload = function (req) {
	function getTextContent(node) {
		return (node.firstChild ? node.firstChild.nodeValue : '');
	}
	var route = {}, transportationTags = req.responseXML.getElementsByTagName('route')[0].getElementsByTagName('transportation');
	for (var i = 0, transportationTag; transportationTag = transportationTags[i]; ++i) {
		if (!!transportationTag.attributes) {
			var stationTag     = transportationTag.getElementsByTagName('station')[0];
			route.trans_name   = getTextContent(stationTag.getElementsByTagName('trans_name')[0]);
			route.station_name = getTextContent(stationTag.getElementsByTagName('station_name')[0]);
		}
	}
	res.innerHTML = route.trans_name + ', ' + route.station_name;
};

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません