PHP XML Expatのパーサ
組み込みPHP進出パーサXML文書を処理することができます。
XMLとは何ですか?
XMLは、データを記述するために、どのようなデータはいに焦点を当てるために使用されます。 XMLファイルは、データの構造を記述します。
XMLでは、事前定義されたタグはありません。 あなたは、独自のタグを定義する必要があります。
XMLの詳細については、私たちをご覧くださいXMLのチュートリアルを 。
何進出はい?
読み取りおよび更新するには - の作成とプロセス - XMLドキュメントを、あなたはXMLパーサーが必要です。
XMLパーサーの2つの基本タイプがあります。
- ツリーベースのパーサー:このパーサはツリー構造にXML文書を変換します。 これは、文書全体を解析し、そのようなドキュメントオブジェクトモデル(DOM)のように、ツリー内の要素へのアクセスを提供します。
- イベントベースのパーサー:XMLドキュメントの一連のイベントとして。 特定のイベントが発生すると、パーサは処理する関数を呼び出します。
Expatのパーサーはイベントベースのパーサーです。
イベントベースのパーサー、XML文書の内容に焦点を当てるのではなく、その構造。 このため、イベントベースのパーサーは、ツリーベースのパーサーよりも高速のデータにアクセスすることができます。
次のXMLフラグメントを考えてみます。
イベントベースのパーサーは、3つのイベントのシリーズとして、上記のXMLを報告します。
- 要素を起動しますから
- スタートCDATAセクション、値:ヤニ
- 閉じる要素:から
上記のXMLの例では、整形式のXMLが含まれています。 文書型宣言(DTD)は、それに関連付けられていないので、しかし、この例では、有効なXMLではありません。
Expatのパーサを使用している場合しかし、これは違いはありません。 Expatのパーサーは、任意のDTDを無視し、有効性がチェックされていません。
イベントベース、非検証XMLパーサとして、Expatの高速かつ軽量、PHPのWebアプリケーションのために非常に適しています。
注:XML文書は整形式でなければならない、そうでなければ進出はエラーを生成します。
インストール
XML Expatのパーサ関数は、PHPのコアの一部です。 いいえ、インストールは、これらの関数を使用する必要はありません。
XMLファイル
以下のXMLファイルには、私たちの例で使用されます。
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XMLパーサーを初期化します
私たちは、PHPでのXMLパーサーを初期化し、異なるXMLイベントのためのプロセッサを定義して、XMLファイルを解析します。
例
//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);
?>
意志出力上のコード:
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!
どのように動作します:
- xml_parser_createによって()関数は、XMLパーサーを初期化します
- 別のイベントハンドラ関数で作成します。
- パーサーが開始タグと終了タグに遭遇したときに実行するように機能する、定義するxml_set_element_handler()関数を追加します。
- パーサは文字データを検出したときに実行するように機能する、定義するxml_set_character_data_handler()関数を追加します。
- xml_parse()関数によってファイル」のtest.xml」を解析します
- エラーがある場合には、そのXMLエラーテキストの説明を変換するxml_error_string()関数を追加
- xml_parser_create()関数メモリに割り当てられて解放するためにxml_parser_free()関数を呼び出します
詳細については、PHP Expatのパーサ
PHP Expatの機能の詳細については、私たちの訪問PHP XMLパーサーのリファレンスマニュアルを 。