Pear XMLを使ってXML文書を処理するまでの準備。

XML_ParserとXML_Tree

まずは、XML_ParserとXML_Treeがインストールされているかチェックします。

# pear list
...
XML_Parser           1.2.7   stable
XML_RPC              1.4.0   stable
XML_Tree             1.1     stable
...

無いようならば、インストールします。

pear install XML_Parser
pear install XML_Tree

ちなみに、ここまでの状態でXML_Treeを使おうとすると、PHP 5.0では下記のようなエラーが出てしまいます。 また、マルチバイト文字への考慮がなされていないらしく、文字化けします。

PHP Parse error:  parse error, unexpected T_CLONE, expecting T_STRING in /usr/share/pear/XML/Tree.php on line 297

XML_Tree_Ex

エラーの対処はひとまず置いておいて、先にマルチバイト文字も処理できるようにします。 Hawk's W3 Laboratory : PHP : PEAR :: XML_Treeを使うにて配布されている、XML_Tree_Ex.zipをダウンロードしてきます。

wget http://www.hawk.34sp.com/phps/XML_Tree_Ex.zip
unzip XML_Tree_Ex.zip 
chmod 644 *.php
mv *.php /usr/share/pear/XML

続いて、エラーの対処をします。 どうやら、PHP 4.0からPHP 5.0にかわってクラスまわりの記述方法が変わったらしく、それが原因でエラーになってしまっているようなので、その部分をPHP 5.0風になおします。 具体的には、以下の三つのファイルについて、インスタンスのクローンを作るメソッドcloneを__cloneに改名します。

// pear/XML/Tree.php on line 297
//function clone() { ←この行を書き換える
function __clone() {

// pear/XML/Tree/Node.php on line 112
//function &clone() { ←この行を書き換える
function __clone() {

// pear/XML_Tree_Node_Ex.php on line 86
//function &clone() { ←この行を書き換える
function __clone() {

これでエラーも出なくなり、マルチバイト文字もちゃんと処理できるようになります。