ホームページ  >  記事  >  バックエンド開発  >  PHP XML Expat パーサーの基本について

PHP XML Expat パーサーの基本について

jacklove
jackloveオリジナル
2018-05-07 14:39:261496ブラウズ

PHP XML Expat パーサーは PHP で重要な役割を果たします。この記事では、それに関連する知識ポイントについて詳しく説明します。

XMLとは何ですか?

XML は、データが何であるかに重点を置いて、データを記述するために使用されます。 XML ファイルはデータの構造を記述します。

XML には、事前定義されたタグはありません。独自のタグを定義する必要があります。

XML について詳しくは、XML チュートリアルをご覧ください。

エクスパットとは何ですか?

XML ドキュメントの読み取りと更新、作成、処理を行うには、XML パーサーが必要です。

XML パーサーには 2 つの基本的なタイプがあります:

ツリーベースのパーサー: このパーサーは XML ドキュメントをツリー構造に変換します。ドキュメント全体を分析し、ドキュメント オブジェクト モデル (DOM) などのツリー内の要素へのアクセスを提供します。

イベントベースのパーサー: XML ドキュメントを一連のイベントとして扱います。特定のイベントが発生すると、パーサーはそれを処理するために 関数 を呼び出します。

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

イベントベースのパーサーは、XML ドキュメントの構造ではなくコンテンツに焦点を当てます。このため、イベントベースのパーサーはツリーベースのパーサーよりも高速にデータにアクセスできます。

次の XML フラグメントを見てください:

66fd2ada9ebb04d4250c850dc1e3737eJani73e20527c4b39a5569bf640e17eb894e

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

Start 要素: from

Start CDATA セクション 、値: Jani

終了要素: from

上記の XML の例には、整形式の XML が含まれています。ただし、このインスタンスには関連付けられた文書型宣言 (DTD) がないため、無効な XML です。

ただし、Expat パーサーを使用する場合は、これに違いはありません。 Expat は、有効性をチェックせず、DTD を無視するパーサーです。

イベントベースの非検証 XML パーサーとして、Expat は高速かつ軽量であるため、PHP Web アプリケーションに非常に適しています。

: XML ドキュメントは適切な形式である必要があります。そうでない場合、Expat はエラーを生成します。

インストール

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

XML ファイル

この例では次の XML ファイルが使用されます:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don&#39;t forget me this weekend!</body>
</note>


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: Tove
From: Jani
見出し: リマインダー
メッセージ: 今週末は私を忘れないでください!

仕組み:

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 XML Expat パーサーの基本的な知識のポイントを詳細に説明します。 php中国語ウェブサイト。

関連推奨事項:

PHP データベース ODBC に関する関連コンテンツ

PHP MySQL Delete ステートメントに関する関連知識

PHP MySQL Update ステートメントに関する関連コンテンツ

以上がPHP XML Expat パーサーの基本についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。