DOMDocument::saveXML

内部の XML ツリーを文字列として出力する

説明

public stringfalse DOMDocument::saveXML(DOMNodenull $node = null, int $options = 0)

DOM 表現から XML ドキュメントを作成します。この関数は、通常は以下の例のように DOM ドキュメントを新しく作成した後にコールされます。

パラメータ

node

ドキュメント全体ではなく、XML 宣言以外の特定のノードだけを 出力したい場合にこのパラメータを使用します。

options

追加のオプション。LIBXML_NOEMPTYTAGLIBXML_NOXMLDECL がサポートされています。 PHP 8.3.0 より前のバージョンでは、LIBXML_NOEMPTYTAG だけがサポートされていました。

戻り値

XML、あるいはエラーが発生した場合は false を返します。

エラー / 例外

DOM_WRONG_DOCUMENT_ERR

node が別のドキュメントのものである場合に 発生します。

変更履歴

バージョン 説明
8.3.0 LIBXML_NOXMLDECL がサポートされました。

例1 DOM ツリーを文字列に保存する

<?php

$doc = new DOMDocument('1.0');
// 出力はきれいに整形したいですね。
$doc->formatOutput = true;

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('これはタイトルです');
$text = $title->appendChild($text);

echo "ドキュメント全体を保存します\n";
echo $doc->saveXML() . "\n";

echo "タイトルの部分のみを保存します\n";
echo $doc->saveXML($title);

?>

上の例の出力は以下となります。

ドキュメント全体を保存します
<?xml version="1.0"?>
<book>
  <title>これはタイトルです</title>
</book>

タイトルの部分のみを保存します
<title>これはタイトルです</title>

参考

  • DOMDocument::save
  • DOMDocument::load
  • DOMDocument::loadXML