PHP XML チュートリアル: 例を使用した作成、解析、読み取り

⚡ スマートサマリー

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

  • 📄 XMLとは何か: XMLは拡張マークアップ言語の略で、タグベースのフォーマットであり、カスタムタグを定義してデータを構造化および転送することができます。
  • 🌳 DOM: ドキュメントオブジェクトモデルは、XMLまたはHTMLドキュメントをツリー構造として捉えるため、コードからノードをナビゲートしたり編集したりすることができます。
  • 🔄 XMLパーサー: パーサーは、XML ドキュメントを PHP の DOM オブジェクトに変換します。 Javaスクリプト、または Python 読み取って変更することができる。
  • ???? XMLの読み込み: simplexml_load_file はファイルをオブジェクトに読み込むため、$xml->record->name のような矢印構文でレコードにアクセスできます。
  • 🛠️ XMLの作成: DOMDocument クラスは、createElement と appendChild を使用してドキュメントをノードごとに構築し、その後 save でファイルを書き込みます。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ SimpleXMLとDOMの比較: SimpleXMLは読みやすさに優れている一方、DOMDocumentは精密な作成や複雑な操作に適している。
  • 🤖 AIアシスト: AIツールは、特定のXML構造の解析コードを生成したり、XML、JSON、PHP配列間で変換を行ったりすることができる。

PHPと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 を使用して 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

PHP を使用して XML ドキュメントを作成する

movies_list.xmlファイルを開きます。

PHP を使用して XML ドキュメントを作成する

SimpleXMLとDOMDocumentの比較

PHPには、XMLを扱うための2つの主要な方法があります。SimpleXMLは主にデータの読み込みが必要な場合に最適で、DOMDocumentはドキュメントの構築や高度な編集においてよりきめ細かな制御を可能にします。以下の表で両者を比較します。

側面 SimpleXMLを DOMドキュメント
使いやすさ 非常にシンプルです。ドキュメントはネストされたオブジェクトのように動作します。 より詳細な、ノードベースのAPI
ベスト 読書と簡単な編集 文書の作成と複雑な操作
アクセススタイル $xml->record->name createElement() と appendChild()
XPathのサポート はい、->xpath() 経由 はい、DOMXPathクラスを介して

実用的なルールとしては、フィードやシンプルなファイルを読み込む際にはまずSimpleXMLを使用し、ドキュメントを作成したり、特定の位置にノードを挿入したり、スキーマに対して検証したりする必要がある場合はDOMDocumentに切り替えるのが良いでしょう。

よくあるご質問

どちらも構造化データを格納するが、XMLはタグを使用し、属性、コメント、スキーマをサポートするのに対し、JSONはより軽量で、配列やオブジェクトに直接マッピングされる。JSONはAPIでよく使用され、XMLはドキュメントや設定に適している。

SimpleXMLまたはDOMDocumentを使用してファイルを読み込み、ノードの値または属性を変更してから、書き戻します。SimpleXMLの場合は、プロパティを編集してasXML('file.xml')を呼び出します。DOMDocumentの場合は、ノードを編集してsave()を呼び出します。

XPathは、XMLドキュメント内のノードを選択するためのクエリ言語です。PHPでは、SimpleXMLで$xml->xpath('//record/name')を呼び出すか、DOMXPathクラスを使用して、一致する要素をループ処理なしで取得します。ping 木全体を通して。

はい。AIは、simplexml_load_string、json_encode、json_decodeを使用してフォーマット間の変換を行うコードを生成し、XML属性や混合コンテンツなど、適切にマッピングされないデータにフラグを立てることができます。結果を確認してください。

はい。XMLのサンプルを貼り付けていただければ、AIがSimpleXMLまたはDOMDocumentコードを生成し、必要な要素と属性を正確に読み取ります。繰り返しレコードのためのループ処理も含まれています。実際のファイルでテストしてみてください。