XML文書を扱う時は Sabel_Xml_Documentクラス を使用します。このオブジェクトを使用してXML文書からDOM構築を行ったり、DOMからXML文書への保存を行います。
Sabel_Xml_Document のスタティックな create()メソッド によりドキュメントオブジェクトを生成します。
$doc = Sabel_Xml_Document::create();
なお、この create()メソッド には下記のパラメータを配列で渡すことが可能です。
- version - XML文書のバージョン
- encoding - XML文書のエンコーディング
- preserveWhiteSpace - 余分な空白を取り除かない
- formatOutput - 字下げや空白を考慮してきれいに整形した出力を行う
各パラメータのデフォルト値は下記の通りです。
- version - "1.0"
- encoding - "utf-8"
- preserveWhiteSpace - false
- formatOutput - true
例えば encoding を "euc-jp"に、preserveWhiteSpace を true にしたい場合は下記のようにします。
$doc = Sabel_Xml_Document::create(array(
"encoding" => "euc-jp",
"preserveWhiteSpace " => true,
));
XML文書ロード後、バージョンやエンコーディングを下記のように取得することができます。
$doc = Sabel_Xml_Document::create();
$doc->load("XML", "/path/to/test.xml");
echo $doc->getVersion(); // "1.0"
echo $doc->getEncoding(); // "utf-8"
ファイルパスではなく、XML文書を文字列として与えるには loadXML()メソッド を使用してください。
$doc = Sabel_Xml_Document::create();
$doc->loadXML(file_get_contents("/path/to/test.xml"));
現在のDOM構造をXML文書として保存する場合は save()メソッド を使用します。load()メソッド を使用しXML文書を読み込んだ状態であれば、そのファイルパスに保存されます。新規で保存する場合には引数に保存先のパスを渡してください。なお、引数にパスを渡した場合は、読み込んだ状態であったとしてもその引数のパスに保存されます。
$doc = Sabel_Xml_Document::create();
$doc->load("XML", "/path/to/test.xml");
// DOM操作など
...
$doc->save(); // "/path/to/test.xml"に保存
$doc = Sabel_Xml_Document::create();
// 新規でDOM構築
...
$doc->save("/path/to/test.xml"); // "/path/to/test.xml"に保存(パス必須)
$doc = Sabel_Xml_Document::create();
$doc->load("XML", "/path/to/test.xml");
// DOM操作など
...
$doc->save("/foo/bar/baz.xml"); // "/foo/bar/baz.xml"に保存("/path/to/test.xml"ではない)
なお、save()メソッドの戻り値は、保存されたXML文書(文字列)となります。
ファイルに保存はしないけれども、現在のDOM構造をXMLで受け取りたい場合には toXML()メソッド を使用してください。
$doc = Sabel_Xml_Document::create();
...
echo $doc->toXML();