XMLWriter による XML の書き出し
XML を出力するときには、XML 出力用の何らかのライブラリーを使うと便利です。
ご存知の通り XML はテキストファイルなので、特別なライブラリを使わずに出力することも簡単です。
しかし、主にデータの中にエスケープすべき文字が含まれている場合にフォーマットが崩れる、などの問題に対処するためにはライブラリを使っておくと無難です。
XMLWriter エクステンションは libxml ライブラリをラップします。
PHP 5.1.2 で PHP ソースに追加され、デフォルトで有効になっています。
XMLWriter の簡単な利用方法
それでは早速、XMLWriter を利用して単純な XML を出力しましょう。
ここで出力するのは次のような XML です。
これは次のような呼び出しで生成可能です。
<?php
header("Content-type: application/xml; charset=utf-8");
$xml = new XMLWriter();
$xml->openURI('php://output');
$xml->setIndent(true);
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('team');
$xml->writeAttribute('version', '1.0');
$xml->writeElement('name', 'Team A');
$xml->writeElement('country', 'USA');
$xml->startElement('members');
// Member 1
$xml->startElement('member');
$xml->writeElement('name', 'Hanako Yamada');
$xml->writeElement('age', 20);
$xml->endElement();
// Member 2
$xml->startElement('member');
$xml->writeElement('name', 'Ichiro Suzuki');
$xml->writeElement('age', 30);
$xml->endElement();
$xml->endElement(); // </members>
$xml->endElement(); // </team>
?>
openURI メソッドに php://output という文字を渡すことで、標準出力に直ちに出力します。
startDocument メソッドは <?xml ... ?> の行を出力します。
その他の要素はルート要素を含め、統一的に startElement メソッドと endElement メソッドのペア、ないし、writeElement メソッドで出力します。
startElement で要素を開始。endElement で要素を終了。writeElement メソッドでは要素の名前とその中の値を指定。属性は writeAttribute メソッドで書き出せる・・・といった調子です。