66PHPとXMLを使って超シンプルなミニブログを作ってみるまでのコーディング日誌【其の二】
ようやく続きです。
間違った情報を書いてはまずいという思いからなかなか更新できませんでしたが、間違っていてもとりあえず恥をさらしてみようと思い直しました。
間違えてはじめて気づくこともあると思いますし。。。なので間違いは遠慮なく突っ込んでください。
新規で生成したxmlに要素を追加する
前回作ったファイルからちょっと体裁を整えます(え
<?php
//DomDocumentを呼び出す
$dom = new DomDocument('1.0','UTF-8');
//要素ノード[document]を追加
$document = $dom->appendChild($dom->createElement('document'));
//新しい要素をdocument要素の子要素として挿入する
$posts = $document->appendChild($dom->createElement('posts'));
//新しい要素をposts要素の子要素として挿入する
$posts->appendChild($dom->createElement('subject','タイトルです。'));
$posts->appendChild($dom->createElement('text','テキストです。'));
//字下げや空白を考慮してきれいに整形した出力を行う
$dom->formatOutput = true;
//同階層にtext.xmlとして保存
$dom->save('test.xml');
//出力(なくても可)
echo $dom->saveXML();
?>前回のようにこのファイルにアクセスするとxmlファイルは以下のようになったと思います。
<?xml version="1.0" encoding="UTF-8"?>
<document>
<posts>
<subject>タイトルです。</subject>
<text>テキストです。</text>
</posts>
</document>
次にこのxmlファイルに要素を追加するphpを書いてみます。
新規でadd.php(名前は自由でかまいません)といったようなファイルを作り、以下のようにします。
<?php
//DomDocumentを呼び出す
$dom = new DomDocument('1.0','UTF-8');
//xmlをloadする前にこれを呼ばないとうまくインデントされない
$dom->preserveWhiteSpace = false;
//保存済みのxmlを読み込む
$dom->load('test.xml');
//字下げや空白を考慮してきれいに整形した出力を行う
$dom->formatOutput = true;
//読み込んだxmlのルート要素を$rootとする
$root = $dom->documentElement;
//新しい要素をルート要素の子要素のとして新規挿入する
$posts = $root->appendChild(new domElement("posts"));
//新しい要素をposts要素の子要素として新規挿入する
$posts->appendChild(new domElement("subject", "タイトル無限増殖"));
$posts->appendChild(new domElement("text", "テキスト無限増殖"));
//xmlを保存する
$dom->save('test.xml');
//出力(なくても可)
echo $dom->saveXML();
?>
アップロード先はxmlと同じ階層にしてください。
- 3行目でxmlクラスを呼び出します。
- 7行目で同階層のtext.xmlを読み込みます。
- 12行目でxmlのルート要素を変数に格納しています。
- 14行目から各要素の追加をしていきます。
- 19行目でtext.xmlに上書き保存されます。
で、このファイルにアクセスすると、なにやらリロードするたびに要素が増えていくのがわかると思います。(やりすぎ注意)
これでなんとなく先が見えてきました。
まだまだ、ブログになるには程遠いですが順次更新していければと思います。
2008-10-24 11:31:16
comment
iskr
HYさん、はじめまして。
申し訳ないのですが、環境だけでは原因がわからないのでエラーの内容を教えていただけませんか?
エラーの多いサンプルですみません...
2009-02-28 13:13:16
HY
はじめまして。
XMLをDBのように使う方法を検索していたら、ここにたどり着きました。
説明が分かりやすく、大変ありがたいのですが、上記サンプル3番目(タイトル無限増殖)についてですが、14行目で処理が停止してしまいます。
1番目のサンプルは問題なく動くのですが、原因等ご教示いただけないでしょうか。
環境はPHP5.04 Apache2.0.63です。
よろしくお願いたします。
2009-02-18 18:03:50

