組み込みの Expat パーサーを使用すると、PHP で XML ドキュメントを処理できます。
XML とは何ですか?
XML は、データの内容に重点を置いてデータを記述するために使用されます。 XML ファイルはデータの構造を記述します。
XML には、事前定義されたタグはありません。独自のタグを定義する必要があります。
エクスパットとは何ですか?
XML ドキュメントの読み取りと更新、作成、処理を行うには、XML パーサーが必要です。
XML パーサーには 2 つの基本的なタイプがあります。
·ツリーベースのパーサー: このパーサーは、XML ドキュメントをツリー構造に変換します。ドキュメント全体を分析し、ドキュメント オブジェクト モデル (DOM) などのツリーの要素にアクセスするための API を提供します。
·イベントベースのパーサー: XML ドキュメントを一連のイベントとして扱います。特定のイベントが発生すると、パーサーはそれを処理する関数を呼び出します。
Expat パーサーはイベントベースのパーサーです。
イベントベースのパーサーは、XML ドキュメントの結果ではなく、その内容に焦点を当てます。このため、イベントベースのパーサーはツリーベースのパーサーよりも高速にデータにアクセスできます。
次の XML フラグメントを見てください:
<from>John</from>
イベントベースのパーサーは、上記の XML を一連の 3 つのイベントとして報告します:
·開始要素: from
·開始 CDATA 部分、値: John
·終了要素: from
上記の XML例には、整形式の XML が含まれています。ただし、この例は、関連付けられた文書型宣言 (DTD) がなく、埋め込み DTD もないため、無効な XML です。
関連する推奨事項:「php Getting Started Tutorial」
ただし、Expat パーサーを使用する場合には違いはありません。 Expat は、有効性をチェックせず、DTD を無視するパーサーです。
イベントベースの非検証 XML パーサーとして、Expat は高速かつ軽量であるため、PHP Web アプリケーションに最適です。
注: XML ドキュメントは適切な形式である必要があります。そうでない場合、Expat はエラーを生成します。
インストール
XML Expat パーサーは、PHP コアの不可欠な部分です。これらの機能を使用するためにインストールは必要ありません。
#XML ファイル
この例では次の XML ファイルが使用されます:George <from>John</from>Reminder Don't forget the meeting!
XML パーサーの初期化
PHP で XML パーサーを初期化し、さまざまな 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("test.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); ?>
-- Note -- To: George From: John Heading: Reminder Message: Don't forget the meeting!
xml_parser_create によって初期化される() 関数 XML パーサー
#さまざまなイベント ハンドラーに一致する関数の作成
#パーサーが検出したタイミングを定義する xml_set_element_handler() 関数を追加します。開始タグと終了タグに到達したときに実行される関数
#xml_set_character_data_handler() 関数を追加して、パーサーが文字データを検出したときに実行される関数を定義します
·xml_parse() 関数を使用してファイル「test.xml」を解析します
##エラーがある場合は、xml_error_string() 関数を追加して XML を変換しますテキスト記述へのエラー
·xml_parser_free() 関数を呼び出して、xml_parser_create() 関数に割り当てられたメモリを解放します
以上がPHPパーサーとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。