《PHP8上級試験対策》DOMDocument::loadXML() と saveXML() の基本動作を理解する

  • URLをコピーしました!

はじめに

PHP で XML を扱うときに登場する DOMDocument::loadXML()saveXML()
どちらも「XML文字列」を読み書きする重要な関数ですが、load() / save() と混同しやすいポイントでもあります。
本記事では、実際のコード例をもとに、試験で問われやすい動作と出力の違いを丁寧に解説します。

キーワード: DOMDocument / loadXML / saveXML / XML操作 / 文字列からの読み込み

目次

🧩 DOMDocument::loadXML() とは?

loadXML()文字列として与えられたXMLを解析し、DOMツリーとして読み込む メソッドです。

public DOMDocument::loadXML(string $source, int $options = 0): bool
  • $source … XML形式の文字列を渡す
  • 戻り値 … 成功時は true、失敗時は false
  • 注意点 … 「ファイル」ではなく「文字列」から読み込む(load() とは異なる)

💾 DOMDocument::saveXML() とは?

saveXML() は、DOMDocument内部のXMLツリーを 文字列として出力する メソッドです。

public DOMDocument::saveXML(?DOMNode $node = null, int $options = 0): string|false
  • $node … 省略するとドキュメント全体を出力
  • 戻り値 … XML文字列。失敗時は false
  • XMLを「ファイルに保存」したい場合は save() を使う

💻 実行例

<?php
declare(strict_types=1);
error_reporting(-1);

$xml = <<< 'XML'
<?xml version="1.0" encoding="UTF-8" ?>
<books>
    <book>
        <title>PHP8技術者認定初級試験公式問題集</title>
        <author>野田貴子</author>
    </book>
    <book>
        <title>PHP8技術者認定上級試験公式問題集</title>
        <author>古圧道明</author>
    </book>
</books>
XML;

$xobj = new DOMDocument();
$xobj->loadXML($xml);
echo $xobj->saveXML();

✅ 出力結果

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book>
        <title>PHP8技術者認定初級試験公式問題集</title>
        <author>野田貴子</author>
    </book>
    <book>
        <title>PHP8技術者認定上級試験公式問題集</title>
        <author>古圧道明</author>
    </book>
</books>

👉 この出力は 正しい動作結果 です。
loadXML() で文字列を読み込み、saveXML() でDOMツリーを再び文字列化しています。

🧠 よくある混同ポイント

メソッド名入力出力主な用途
load()XMLファイルDOMツリーXMLファイルを開く
loadXML()XML文字列DOMツリー文字列からXMLをパース
save()DOMツリーXMLファイルXMLをファイルに保存
saveXML()DOMツリーXML文字列XMLを文字列出力

🪶 図解:DOMDocumentによるXMLの流れ

+---------------------+
| XML文字列            |
|  (例: $xml)         |
+---------+-----------+
          |
          | loadXML()
          v
+---------------------+
| DOMツリー構造        |
| (DOMDocument内部)   |
+---------+-----------+
          |
          | saveXML()
          v
+---------------------+
| XML文字列として出力    |
+---------------------+

🏁 まとめ

  • loadXML() → XML文字列を読み込んでDOM構造を作る
  • saveXML() → DOM構造を文字列化して出力する
  • load() / save() はファイル操作用である点に注意

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次