PHP XML チュートリアル: 例を使用した作成、解析、読み取り
⚡ スマートサマリー
PHPとXMLは連携して、システム間でデータを構造化、保存、交換します。このチュートリアルでは、XML、DOM、XMLパーサーについて説明し、SimpleXMLを使用してXMLドキュメントを読み込む方法と、DOMDocumentクラスを使用してXMLドキュメントを作成する方法を示し、最後にそれぞれをいつ使用するかを解説します。

XMLとは何ですか?
XML は Extensible Markup Language の頭字語です。
XMLは、データを構造化、保存、およびあるシステムから別のシステムへ転送するために使用されます。
XMLはHTMLと似ています。どちらも開始タグと終了タグを使用します。ただし、HTMLとは異なり、XMLではユーザーが独自のタグを定義できます。
DOMとは何ですか?
DOM は、Document Object Model の頭字語です。
これは、プラットフォームや言語に依存しない標準規格であり、以下の形式でデータにアクセスして操作する方法を定義します。
- HTML
- XHTML
- XML
DOM XML は、XML ドキュメントにアクセスして操作するために使用されます。 それ XMLドキュメントを表示します 樹木構造として。
XML パーサー
XMLパーサーとは、XML文書をXMLドキュメントオブジェクトモデル(DOM)オブジェクトに変換するプログラムです。
XML DOMオブジェクトは、以下の方法で操作できます。 Javaスクリプト、 PythonPHP、その他の言語。
キーワードCDATAは、(未解析)文字データの頭文字をとったもので、XMLドキュメントを解析する際に「<」や「>」などの特殊文字を無視するために使用されます。
XML を使用する理由
- SOAPやRESTといったWebサービスは、情報交換にXML形式を使用します。現代のアプリケーションはWebサービスを多用しているため、XMLとは何か、そしてどのように機能するのかを理解することは、開発者として競争上の優位性を得る上で非常に重要です。
- XML文書は、アプリケーションの設定情報を保存するために使用できます。
- 独自のカスタムタグを作成できるため、柔軟性が向上します。
XMLドキュメントの例
あなたが開発中だと仮定しましょうping ウェブサービスからXML形式でデータを取得するアプリケーション。
以下は、XMLドキュメントのサンプルです。
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
ここに、
- 「 ”は使用するXMLバージョンとエンコーディングを指定します。
- 「 ”がルート要素です。
- 「 … 」は、従業員レコードごとに1つずつある子要素です。
PHP を使用して XML を読み取る方法
それでは、従業員のXMLドキュメントを読み込み、その結果をWebブラウザに表示するコードを記述しましょう。 index.phpを
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
ここに、
- 「$xml = simplexml_load_file('employees.xml');」は、simplexml_load_file関数を使用してemployees.xmlという名前のファイルを読み込み、その内容を変数$xmlに代入します。
- 「$list = $xml->record;」は、レコードノードの内容を取得します。
- 「for ($i = 0; $i < count(…)…」は、配列を読み込んで結果を出力するforループです。
- 「$list[$i]->attributes()->man_no;」 要素の man_no 属性を読み取ります
- 「$list[$i]->名前;」 name 子要素の値を読み取ります
- 「$list[$i]->位置;」 位置子要素の値を読み取ります。
XMLリーダーのテスト
index.php ファイルを phptuts/xml フォルダに保存したと仮定して、 URL http://localhost/phptuts/xml/index.php
PHP を使用して XML ドキュメントを作成する方法
ここでは、PHP を使用して XML ドキュメントを作成する方法を見ていきます。
以下のコードは、PHPの組み込みクラスであるDOMDocumentを使用してXMLドキュメントを作成します。
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
ここに、
- 「$dom = new DOMDocument();」は、DOMDocumentクラスのインスタンスを作成します。
- 「$dom->encoding = 'utf-8';」 ドキュメントのエンコーディングを utf-8 に設定します
- 「$dom->xmlVersion = '1.0';」 バージョン番号 1.0 を指定します
- 「$dom->formatOutput = true;」 出力が適切にフォーマットされていることを保証します
- 「$root = $dom->createElement('映画');」 Movies という名前のルート ノードを作成します
- 「$attr_movie_id = new DOMAttr('movie_id', '5467');」は、映画ノードのmovie_id属性を定義します。
- 「$dom->createElement('ElementName', 'ElementValue')」は子ノードを作成します。ElementNameは要素の名前を指定します(例:Title)。ElementValueは子ノードの値を設定します(例:The Campaign)。
- 「$root->appendChild($movie_node);」は、映画ノードをルートノード「Movies」に追加します。
- 「$dom->appendChild($root);」 ルート ノードを XML ドキュメントに追加します。
- 「$dom->save($xml_file_name);」 XML ファイルを Web サーバーのルート ディレクトリに保存します。
- 「echo “$xml_file_name が正常に作成されました”;」は成功メッセージを表示します。
XMLのテスト Creator
create_movies_list.php ファイルを phptuts/xml フォルダに保存したと仮定して、 URL http://localhost/phptuts/xml/create_movies_list.php
movies_list.xmlファイルを開きます。
SimpleXMLとDOMDocumentの比較
PHPには、XMLを扱うための2つの主要な方法があります。SimpleXMLは主にデータの読み込みが必要な場合に最適で、DOMDocumentはドキュメントの構築や高度な編集においてよりきめ細かな制御を可能にします。以下の表で両者を比較します。
| 側面 | SimpleXMLを | DOMドキュメント |
|---|---|---|
| 使いやすさ | 非常にシンプルです。ドキュメントはネストされたオブジェクトのように動作します。 | より詳細な、ノードベースのAPI |
| ベスト | 読書と簡単な編集 | 文書の作成と複雑な操作 |
| アクセススタイル | $xml->record->name | createElement() と appendChild() |
| XPathのサポート | はい、->xpath() 経由 | はい、DOMXPathクラスを介して |
実用的なルールとしては、フィードやシンプルなファイルを読み込む際にはまずSimpleXMLを使用し、ドキュメントを作成したり、特定の位置にノードを挿入したり、スキーマに対して検証したりする必要がある場合はDOMDocumentに切り替えるのが良いでしょう。



