TECH I.S.

PHP XML Expatパーサー


組み込みのXML Expatパーサーにより、PHPでXMLドキュメントを処理できます。


XML Expatパーサー

Expatパーサーはイベントベースのパーサーです。

次のXML部分を見てください。

<div> <from>Jani</from> </div>

イベントベースのパーサーは、上記のXMLを一連の3つのイベントとして報告します。

  • 開始要素:from
  • CDATA セクションの開始、値:Jani
  • 要素を閉じる:from

XML Expatパーサー関数は、PHPコアの一部です。これらの機能を使用するために必要なインストールはありません。


XMLファイル

以下の例では、XMLファイル「note.xml」が使用されます。

<div> <?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> </div>

XML Expatパーサーの初期化

PHPでXML Expatパーサーを初期化し、さまざまなXMLイベントのハンドラーをいくつか定義してから、XMLファイルを解析します。

<?php // Initialize the XML parser $parser=xml_parser_create(); // Function to use at the start of an element function start($parser,$element_name,$element_attrs) {   switch($element_name) {     case "NOTE":     echo "-- Note --<br>";     break;     case "TO":     echo "To: ";     break;     case "FROM":     echo "From: ";     break;     case "HEADING":     echo "Heading: ";     break;     case "BODY":     echo "Message: ";   } } // Function to use at the end of an element function stop($parser,$element_name) {   echo "<br>"; } // Function to use when finding character data function char($parser,$data) {   echo $data; } // Specify element handler xml_set_element_handler($parser,"start","stop"); // Specify data handler xml_set_character_data_handler($parser,"char"); // Open XML file $fp=fopen("note.xml","r"); // Read data while ($data=fread($fp,4096)) {   xml_parse($parser,$data,feof($fp)) or   die (sprintf("XML Error: %s at line %d",   xml_error_string(xml_get_error_code($parser)),   xml_get_current_line_number($parser))); } // Free the XML parser xml_parser_free($parser); ?>

例の説明:

  1. xml_parser_create()関数を使用して XML パーサーを初期化します。
  2. さまざまなイベント ハンドラーで使用する関数を作成する
  3. xml_set_element_handler()関数を追加して、パーサーが開始タグと終了タグに遭遇したときに実行される関数を指定します。
  4. xml_set_character_data_handler()関数を追加してパーサーが文字データに遭遇したときに実行する関数を指定します。
  5. xml_parse()関数を使用してファイル「note.xml」を解析します。
  6. エラーが発生した場合は、XML エラーをテキストの説明に変換するxml_error_string()関数を追加します。
  7. xml_parser_free() 関数を呼び出して、xml_parser_create() 関数で割り当てられたメモリを解放します。

その他のPHP XML Expatパーサー

PHP Expat関数の詳細については、PHP XML パーサー リファレンスを参照して下さい。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細