亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

PHP XML 拡張

PHP XML Expat Parser

XML は、データベースのような形式でデータを保存する一般的な半構造化ファイル形式です。 実際のアプリケーションでは、単純でセキュリティの低いデータが XML ファイル形式で保存されることがよくあります。 この利點は、データベースとの対話操作を減らして読み取り効率を向上できる一方で、XML の利點を有効に活用してプログラム作成の難易度を軽減できることです。

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

XML とは何ですか?

XMLとは「eXtensible Markup Language」の略で、HTMLと似たマークアップ言語です。 ただし、HTML とは異なり、XML は主にデータの記述とデータの保存に使用され、HTML は主にデータの表示に使用されます。

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

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

例:

   <?xml version="1.0"?>
        <threads>
            <thread>
                <title>Welcome </title>
                <author>Simon </author>
                <content>Welcome to XML guestbook!! </content>
             <thread>
        </threads>

XML ファイルの先頭では、通常、<?xml version="1.0"?> は XML データの先頭を識別するために使用され、XML データは標準のバージョン情報を使用します。

<thread> および <thread> タグはこれをメッセージとしてマークします。メッセージにはタイトル、作成者、內容があり、メッセージメッセージを完全に表現します。

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

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

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

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

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

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

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

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

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

<from>Jani</from>

イベントベースのパーサーは、上記の 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't forget me this weekend!</body>
</note>


XML パーサーの初期化

さまざまな目的のために PHP で XML パーサーを初期化します。 XML イベント定義ハンドラーは、この XML ファイルを解析します。

<?php
//初始化XML解析器
$parser=xml_parser_create();
//在元素開始時使用的函數
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 stop($parser,$element_name)
{
echo "<br>";
}
//查找字符數據時使用的函數
function char($parser,$data)
{
echo $data;
}
//指定元素的處理
xml_set_element_handler($parser,"start","stop");
//指定數據處理程序
xml_set_character_data_handler($parser,"char");
//打開XML文件
$fp=fopen("test.xml","r");
//讀取數據
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)));
}
//釋放內存
xml_parser_free($parser);
?>

上記のコードは出力します:

-- 注 --
To: Tove
From: Jani
見出し: リマインダー
メッセージ: 今週末は私を忘れないでください!

仕組み:

1. xml_parser_create() 関數を使用して XML パーサーを初期化します

2. さまざまなイベント ハンドラーに一致する関數を作成します

3. パーサーが開始タグと終了タグを検出したときに実行する関數を定義するための xml_set_element_handler() 関數を追加します。

4. xml_set_character_data_handler() 関數を追加して、パーサーが文字データを検出したときに実行する関數を定義します

5. エラーが発生した場合は、xml_parse() 関數を使用します。 add xml_error_string() 関數は、XML エラーをテキストの説明に変換します

7. xml_parser_free() 関數を呼び出して、xml_parser_create() 関數に割り當てられたメモリを解放します

PHP Expat パーサーの詳細情報

PHP Expat の詳細については、関數の詳細については、PHP XML パーサー リファレンス マニュアルを參照してください。

學び続ける
||
<?php //初始化XML解析器 $parser=xml_parser_create(); //在元素開始時使用的函數 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 stop($parser,$element_name) { echo "<br>"; } //查找字符數據時使用的函數 function char($parser,$data) { echo $data; } //指定元素的處理 xml_set_element_handler($parser,"start","stop"); //指定數據處理程序 xml_set_character_data_handler($parser,"char"); //打開XML文件 $fp=fopen("test.xml","r"); //讀取數據 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))); } //釋放內存 xml_parser_free($parser); ?>