JavaScriptでXMLの読み込み

February 24, 2009,
tags: ieでしか動きません javascript xmldom


このエントリーをはてなブックマークに追加

Excelで管理してるデータが重いので、XMLにして、JavaScriptで読み込んだら早いんじゃね?って思ってちょっと作ってみました。
でも結局あるxmlの要素に文字データが多くて、さらに1000件ぐらいあったら結構重くなってしまったので・・・これは使えません。

サンプル

function xmlDisplay(filename){
    xml_doc = new ActiveXObject("Microsoft.XMLDOM");
    xml_doc.async = false;
    xml_doc.load(filename);

    if(!xml_doc.documentElement.hasChildNodes()){
        return false;
    }

    var count = xml_doc.documentElement.childNodes.length;//件数取得
    var root = xml_doc.documentElement.firstChild;//ルート要素の子要素を取得
    var userCnt; //子要素のデータ件数

    //子要素データ取得
    var ret = new Array(count);
    ret[0] = count;
    var arrayCnt = 1;
    while(root){
        userCnt = root.childNodes.length;//子要素の件数取得
        var item = new Array(userCnt)
        item[0] = root.getAttributeNode("author").value;//author属性の取得
        item[1] = root.getAttributeNode("id").value;//id属性の取得
        for(i = 0; i < userCnt; i++){
            item[i + 2] = nl2br(root.childNodes.item(i).text);//子要素の件数文だけ情報を取得する
        }

        ret[arrayCnt] = item;
        arrayCnt++;
        root = root.nextSibling;//次のノードを取得
    }

    return ret;
}

XMLファイル


 <user author="polidog" id="00001">
  <area>アジア</area>
  <address>http://www.polidog.jp/</address>
  <description>テスト</description>
 </user>
</root>

こんな感じでXML_DOM使って作ってみたわけです。
なのでIEでしか動きませんよー!!
XPathとか使ったほうが早く動作するのかなぁー。ちょっとがんばってみます。

comments powered by Disqus