ホームページ >バックエンド開発 >XML/RSS チュートリアル >PHP拡張のXML操作(2) - XMLパーサーのインストールと概要

PHP拡張のXML操作(2) - XMLパーサーのインストールと概要

黄舟
黄舟オリジナル
2017-02-13 14:53:292112ブラウズ



1. 概要とインストール

XML (eXtensible Markup Language) は、インターネット上の構造化文書の対話に使用されるデータ形式です。 これは、インターネット協会 (W3C) によって定義された標準です。 XML および関連テクノロジに関する情報は、//m.sbmmt.com/ で参照できます。

この PHP 拡張機能の実装は、James Clark によって PHP で書かれた expat をサポートしています。 このツールキットは XML ドキュメントを解析できます (ただし、検証はできません)。 PHP が提供する 3 つの文字エンコーディング (US-ASCII、ISO-8859-1、および UTF-8) をサポートしています。 UTF-16はサポートされていません。

この拡張機能は XML パーサーを作成し、さまざまな XML イベントの ハンドラー を定義します。 各 XML パーサーには、調整できるいくつかのパラメーターもあります。

この拡張機能には、libxml PHP 拡張機能が必要です。これは、--enable-libxml を使用する必要があることを意味しますが、libxml はデフォルトで有効になっているため、これは暗黙的に行われます。

デフォルトでは、この拡張機能は expat compat レイヤーを使用します。このライブラリは //m.sbmmt.com/ にあります。 expat ライブラリで Makefile を使用しても、デフォルトではライブラリ ファイルはビルドされません。次のビルド ルールを使用してビルドできます。


libexpat.a: $(OBJS)
    ar -rc $@ $(OBJS)
    ranlib $@

expat のソース コード RPM インストール パッケージは http:// にあります。 www.php .cn/ が見つかりました。

この拡張機能はデフォルトで有効になっており、コンパイル時に次のオプションを使用して無効にできます: --disable-xml

これらの関数はデフォルトで有効になっており、バンドルされている expat ライブラリを使用します。 XML サポートはパラメーター --disable-xml を使用して無効にできます。 PHP を Apache 1.3.9 以降のモジュールとしてコンパイルすると、PHP は Apache にバンドルされている expat ライブラリを自動的に使用します。バンドルされた expat ライブラリを使用したくない場合は、PHP のconfigure 構成スクリプトを実行するときにパラメータ --with-expat-dir=DIR を使用してください。DIR は expat インストールのルート ディレクトリを指す必要があります。

Windows バージョンの PHP には、この拡張機能のサポートが組み込まれています。これらの機能を使用するために追加の拡張機能をロードする必要はありません。

2. イベントハンドラー

XML イベントハンドラーは次のように定義されます:

3. 大文字変換

要素処理関数は、要素名を大文字(大文字)形式に変換することができます。大文字と小文字の区別は、「大文字以外の文字を対応する大文字に置き換える文字列操作」として定義されます。つまり、XML では、大文字と小文字の区別は大文字に変換することです。

デフォルトでは、処理関数を介して渡されるすべての要素名は大文字に変換されます。各 XML パーサーは、それぞれ xml_parser_get_option() 関数および xml_parser_set_option() 関数を通じてこの関数をクエリおよび制御できます。

4. エラー コード

次の定数は、XML 関連のエラー コード (xml_parse() 関数の戻り値) です:

  • XML_ERROR_NONE

  • XML_ERROR_NO_MEMORY

  • XML_ERR OR_SYNTAX

  • XML_ERROR_NO_ELEMENTS XML_ERROR_INVALID_TOKEN

  • XML_ERROR_UNCLOSED_TOKENTOKEN

  • XML_ERROR_PARTIAL_CHAR

  • エラーML_ERROR_ASYNC_ENTITY

  • XML_ERROR_BAD_AR_REF

  • XML_ERROR_ENTITY_REF

  • XML_ERROR_ATTRIBUTE_EXT_Extity_Ref

  • xml_ERROR_MISPLED_PI

  • XML_UNKNOWN_ENCOD ING

  • Xml_error_incorrect_encoding

  • xml_error_unclosed_cdata_section

  • xml_error_extRNAL_ENTITY_HANDLING

  • 、文字コーディング

  • XML 拡張子Unicode 文字セットは、いくつかの異なる文字エンコーディングを通じてサポートされています。 文字エンコーディングには、オリジナル エンコーディングとターゲット エンコーディングの 2 種類があります。PHP の内部プレゼンテーションでは、ドキュメントは常に UTF-8 でエンコードされます。
  • XML が解析されると、元のエンコードが完了します。 XML パーサーを作成するときに、元のエンコーディングを指定できます (このエンコーディングは、XML パーサーのライフサイクルの後半で変更することはできません)。 サポートされている RAW エンコーディングは ISO-8859-1、US-ASCII、および UTF-8 です。最初の 2 つはシングルバイト エンコーディングです。つまり、各文字は 1 バイトとして表されます。 UTF-8 は、文字を 1 ~ 4 バイトに配置された一連の可変数 (最大 21) のビットにエンコードできます。 PHP で使用されるデフォルトの raw エンコーディングは ISO-8859-1 です。

  • PHP がデータを XML 処理関数に渡すと、ターゲットのエンコーディングが完了します。 XML プロセッサを作成するとき、ターゲット エンコーディングは元のエンコーディングと同じに設定されますが、自由に変更できます。 ターゲットのエンコードは、処理命令のターゲットだけでなく、文字データとタグ名にも影響します。
  • XML パーサーは、元のエンコーディングが表現できる範囲外の文字を検出すると、エラーを返します。

  • PHP が解析された XML ドキュメント内で、指定されたターゲット エンコーディングで表現できない文字を検出した場合、問題の文字は「ダウングレード」されます。通常、これらの文字は疑問符 (?) に置き換えられます。
  • 上記は、PHP 拡張機能の XML 操作 (2) - XML パーサーのインストールと概要です。詳細については、PHP 中国語 Web サイト (m.sbmmt.com) をご覧ください。

サポートされる XML プロセッサ
PHP ハンドラー関数 イベントの説明
xml_set_element_ handler( ) 要素イベントがトリガーされるXML パーサーが開始タグまたは終了タグを検出したとき。 開始タグと終了タグには異なるハンドラーがあります。
xml_set_character_data_handler() 文字データ範囲は、タグ間のスペースを含む、XML ドキュメント内のすべてのタグなしコンテンツを指します。 XML パーサーは空白を追加または削除しないことに注意してください。空白が意味があるかどうかはアプリケーション (ユーザー) が判断します。
xml_set_processing_instruction_handler() PHP プログラマーは、処理命令 (PI) に熟練している必要があります。 は処理命令であり、php を「処理命令オブジェクト」と呼びます。 システムによって予約されている「XML」で始まるすべての処理命令オブジェクトを除き、その他の処理関数はアプリケーションプログラムによって指定されます。
xml_set_default_handler() 他の処理関数が実行されていない場合は、デフォルトの処理関数が実行されます。 XML や文書型宣言などの情報は、デフォルトのハンドラー関数で使用できます。
xml_set_unparsed_entity_decl_handler() 未解析エンティティ宣言 (NDATA) は、このハンドラー関数を呼び出します。
たとえば、ファイルまたは URL を参照します。例は、XML 外部エンティティ ルーチンにあります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。