XML文書のロードと保存 | XML & DOM

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();