PHPチュートリアル

PHPホーム PHPイントロ PHPインストール PHP構文 PHPコメント PHP変数 PHPエコー/印刷 PHPデータ型 PHP文字列 PHP番号 PHP数学 PHP定数 PHP演算子 PHP If ... Else ... Elseif PHPスイッチ PHPループ PHP関数 PHP配列 PHPスーパーグローバル PHP正規表現

PHPフォーム

PHPフォーム処理 PHPフォームの検証 PHPフォームが必要 PHPフォームのURL / Eメール PHPフォームの完了

PHP Advanced

PHPの日付と時刻 PHPインクルード PHPファイルの処理 PHPファイルのオープン/読み取り PHPファイルの作成/書き込み PHPファイルのアップロード PHPクッキー PHPセッション PHPフィルター PHPフィルターアドバンスト PHPコールバック関数 PHP JSON PHPの例外

PHPOOP _

PHPOOPとは PHPクラス/オブジェクト PHPコンストラクター PHPデストラクタ PHPアクセス修飾子 PHPの継承 PHP定数 PHP抽象クラス PHPインターフェース PHPの特性 PHP静的メソッド PHPの静的プロパティ PHP名前空間 PHPIterables

MySQLデータベース

MySQLデータベース MySQLコネクト MySQL Create DB MySQLテーブルの作成 MySQLの挿入データ MySQLは最後のIDを取得します MySQL Insert Multiple MySQLを準備しました MySQL Select Data MySQL Where MySQL Order By MySQLデータの削除 MySQLアップデートデータ MySQL制限データ

PHP XML

PHPXMLパーサー PHPSimpleXMLパーサー PHPSimpleXML-取得 PHP XMLExpat PHP XML DOM

PHP -AJAX

AJAXイントロ AJAX PHP AJAXデータベース AJAX XML AJAXライブ検索 AJAXポール

PHPの

PHPの例 PHPコンパイラ PHPクイズ PHP演習 PHP証明書

PHPリファレンス

PHPの概要 PHP配列 PHPカレンダー PHPの日付 PHPディレクトリ PHPエラー PHP例外 PHPファイルシステム PHPフィルター PHP FTP PHP JSON PHPキーワード PHP Libxml PHPメール PHP数学 PHPその他 PHP MySQLi PHPネットワーク PHP出力制御 PHP正規表現 PHP SimpleXML PHPストリーム PHP文字列 PHP変数の処理 PHPXMLパーサー PHP Zip PHPタイムゾーン

PHPXMLエクスパットパーサー


組み込みのXMLExpat Parserを使用すると、PHPでXMLドキュメントを処理できます。


XMLExpatパーサー

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

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

<from>Jani</from>

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

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

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


XMLファイル

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

<?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>


XMLExpatパーサーの初期化

PHPでXMLExpat Parserを初期化し、さまざまな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_error_string()エラーの場合、XMLエラーをテキストの説明に変換する関数を追加します
  7. 関数を呼び出して、関数xml_parser_free()で割り当てられたメモリを解放しますxml_parser_create()

その他のPHPXMLExpatパーサー

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