PHP XML Expat解析器知識点まとめ

3459 ワード

内蔵のExpat解析器はPHPでXML文書を扱うことを可能にした.
XMLとは?
XMLはデータを記述するために使用され、その焦点はデータが何であるかである.XMLファイルには、データの構造が記述されています.
XMLには、事前定義されたラベルはありません.独自のラベルを定義する必要があります.
Expatとは?
読み取りと更新-作成と処理-XMLドキュメントを作成するには、XML解析器が必要です.
基本的なXML解析のタイプは2つあります.
  • ツリーベースの解析器:この解析器はXMLドキュメントをツリー型構造に変換します.ドキュメント全体を解析し、ドキュメントオブジェクトモデル(DOM)などのツリーの要素にアクセスするAPIを提供します.
  • イベントベースの解析器:XMLドキュメントを一連のイベントと見なします.特定のイベントが発生すると、解析器は関数を呼び出して処理します.

  • Expat解析器はイベントベースの解析器です.
    イベントベースの解析器は、結果ではなくXMLドキュメントの内容に集中します.そのため、イベントベースの解析器は、ツリーベースの解析器よりもデータに迅速にアクセスできます.
    次のXMLクリップを参照してください.
    
    John

    イベントベースの解析器は、上記のXMLを一連の3つのイベントとして報告します.
  • 開始要素:from
  • CDATAセクションを開始します.値:John
  • 要素を閉じる:from
  • 上記のXMLの例には、形式の良いXMLが含まれています.ただし、この例は、ドキュメントタイプ宣言(DTD)が関連付けられていないため、DTDが埋め込まれていないため、無効なXMLです.
    ただし、Expat解析器を使用する場合は、これに違いはありません.Expatは有効性をチェックしない解析器であり、DTDは無視されます.
    イベントベースの非検証XML解析器として、Expatは高速で軽量で、PHPのWebアプリケーションに適しています.
    注記:XMLドキュメントの形式は良好でなければなりません.そうしないと、Expatはエラーを生成します.
    インストール
    XML Expat解析器はPHPコアの構成部分である.これらの関数は、インストールする必要がなく使用できます.
    XMLファイル
    次のXMLファイルは、私たちの例で使用されます.
    
    
    
    George
    John
    Reminder
    Don't forget the meeting!
    

    XML解析器の初期化
    PHPでXML解析器を初期化し、異なるXMLイベントのプロセッサを定義し、このXMLファイルを解析します.
    
    ";
      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 "
    "; } //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()関数のメモリ