« 昨日の夜の事 |メイン| デザフェス行きます(作品も) »

2009.05.12.

DOMの生成と読込

PHPで吐いたXMLをJavaScriptで読むと言う事をやっています。
PHPをUTF-8(bomなし)にしても、どこでどう間違って書式が狂ってしまうか分からないので、DomDocumentオブジェクトを使って出力する事にしました。
これで出す方は問題ないでしょう。
saveXML()と言う関数名に違和感を感じるけど。

読む方も意外と問題で、やたらgetElementsByTagName()を使えば良いと言う訳でもなさそうです。
存在しないタグ名を指定すると他のタグまで読めなくなったりします。
そこで、実際には何が出ているのか分かるように、DOMをHTMLのリストにする関数を作ってみました。
これでタグ名を間違えたかどうかくらいは分かるようになりました。

function dom2list(domdata)
{
  // リストの開始
  var text = "<ul>\n";

  // Documentそのものは返さなくて良いので子ノードをチェック
  var node_count = domdata.childNodes.length;
  
  // 子ノードが1個以上あれば
  if (node_count > 0)
  {
    var i;
    var node;
    var name;
  
    // 子ノードの数だけ繰り返す
    for (i in domdata.childNodes)
    {
      node = domdata.childNodes[i];
      name = node.nodeName;
      
      // テキストノードなら
      if (name == "#text")
      {
        // リストアイテムとして値を表示
        text = text + "<li>" + node.nodeValue + "</li>\n";
      }
      // オブジェクトなら
      else if (name)
      {
        // 名前と中身を表示
        text = text + "<li>" + name + ": " + dom2list(node) + "</li>\n";
      }
    }
  }
  // 子ノードがなければ
  else
  {
    // リストアイテムとして値を表示
    text = text + "<li>" + domdata.nodeValue + "</li>\n";
  }
  // リストを返す
  text = text + "</ul>\n";
  return(text);
}

by さた : 記事URL| カテゴリ:PC

この記事のトラックバックURL:
http://honmono.no-ip.biz/cgi-bin/mt/mt-tb.cgi/738

トラックバック

コメント

コメントを書く




保存しますか?