【PHP】DOMを使ってXMLを操作(導入インストール編)

PHPでXMLを扱いときによく使われるのがDOM

気をつけないといけないのがPHP4とPHP5では使用するメソッド名がかなり違うので、システム構築する際は環境をちゃんと確認しないといけない。どっちでも動くように作り込むのはかなり大変そう・・・。参考

PHP4:DOM XML関数
$dom = domxml_open_file($xmlfilename);

PHP5:DOM Function
$dom = new DOMDocument;
$rtn = $dom->load($xmlfilename);

ちなみにインストールは簡単でPHP5の場合
# yum install php-xml
# service httpd reload
で終了。

phpinfoで確認するとDOMの項目が表示されている。

JavascriptでDOMを使ったことがあるなら、PHP5のメソッドは見慣れたものばかりなのでプログラムは(比較的)作りやすい。
なぜならPHP5で標準DOMインターフェイスに対応したから。参考
でもXpathを使った記述方法は、JavaScriptに比べめんどくさい。その辺はSimpleXMLと組み合わせて使うと幸せになれる。
これについてはまた後日書きます。
PHP4で作りたいときはここのマニュアルを参考に。
PHP5はこっち

XMLを読み込むサンプルコード

$objDom = new DOMDocument(); 
$objDom->preserveWhiteSpace = false; //余分な空白を取り除く. 
if ($objDom->load('sample.xml')) {
     return $objDom;
}
 else {
     return null; 
}

preserveWhiteSpaceはインデント部分の余分な空白を取り除いてくれるので、空白で悩まされなくていい。ファイルに書き出すときのサンプルコード

$objDom = new DOMDocument();
$objDom->encoding = 'UTF-8';   //文字化け対策.
$objDom->formatOutput = true;  //字下げや空白を考慮してきれいに整形した出力を行う。.
$objRoot = $objDom->appendChild( $objDom->createElement('root') );
$objComment = $objRoot->appendChild( $objDom->createElement('comment') ); 
$objComment->appendChild( $objDom->createCDATASection('CDATAセクション') );
$objDom->save('sample.xml');

できるXMLはこんな感じ↓ image