【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');