人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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;

●質問者: huruyosi
●カテゴリ:インターネット ウェブ制作
✍キーワード:CONTINUE firefox IE IE6 JavaScript
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ofk
●60ポイント

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;
};
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ