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);
}
この記事のトラックバックURL:
http://honmono.no-ip.biz/cgi-bin/mt/mt-tb.cgi/738

