検索
ホームページバックエンド開発PHPチュートリアルPHP での XML アプリケーション_PHP チュートリアル

概要
XMLとは、Extensible Markup Language(eXtensible Markup Languageの略で、拡張可能なマークアップ言語を意味します)の略です。 XML は、ドキュメントを部分に分割し、それらの部分を識別するセマンティック マークアップを定義する一連のルールです。これはメタ マークアップ言語でもあります。つまり、他のドメイン固有のセマンティックおよび構造化マークアップ言語を定義するための構文言語を定義します。 XML は現在最も注目されているテクノロジーです。 PHP には XML 文書を解析する機能もあります。以下では、PHP における XML の応用について説明します。

XMLの概要
XML (eXtended Markup Language:拡張マークアップ言語)について話すときは、まずHTMLコードの一部を見てみましょう:

XML
<p><center><font color="red">TEXT</font></center></p>
<a href="www.domain.com"><img src="logo. jpg"/>< /a>
</body>
</html>
上記のコードは、構造的には XML の規則に準拠しています。 XML は、データを含むツリー状の構造型として理解できます。
1.規則に準拠していない
など、一貫した大文字を使用します。 2. 属性値 (href="????" など) は、次のように "" で囲む必要があります。 as は誤りです
3. すべての要素は開始タグと終了タグで構成されている必要があります。要素は または空要素 PHP での XML アプリケーション_PHP チュートリアル​​ 4. プログラムを書くときのループと同じように、すべての要素は相互にネストされている必要があり、すべての要素はルート要素内にネストされている必要があります、上記のコードのすべてのコンテンツなど、すべてが にネストされています。
5. 要素名(つまり、body a p img 上記など)は文字で始まる必要があります。


PHPのXMLパーサーExpatの使い方は? Expat は、PHP スクリプト言語の XML パーサー (XML プロセッサーとも呼ばれる) であり、プログラムが XML ドキュメントの構造とコンテンツにアクセスできるようにします。イベントベースのパーサーです。 XML パーサーには 2 つの基本的なタイプがあります。 ツリーベースのパーサー: XML ドキュメントをツリー構造に変換します。このタイプのパーサーは、結果のツリーの各要素にアクセスするための API を提供しながら、記事全体を解析します。その共通規格は DOM (Document Object Model) です。
イベントベースのパーサー: XML ドキュメントを一連のイベントとして扱います。特別なイベントが発生すると、パーサーは開発者が提供する関数を呼び出してそれを処理します。イベントベースのパーサーは、XML 文書のデータ中心のビューを備えています。これは、XML 文書の構造ではなくデータ部分に焦点を当てていることを意味します。これらのパーサーはドキュメントを最初から最後まで処理し、コールバック関数を通じて要素の開始、要素の終了、特徴データの開始などのイベントをアプリケーションに報告します。
以下は「Hello-World」の XML ドキュメントの例です:

Hello World

イベントベースのパーサーは 3 つのイベントとして報告します:
開始要素:greeting
CDATA の開始item、値は:Hello World
終了要素:greeting
イベントベースのパーサーはドキュメントを記述する構造を生成しません。 もちろん、Expat を使用する場合は、必要に応じて PHP で完全なネイティブ ツリー構造を生成することもできます。 。 CDATA アイテムでは、イベントベースのパーサーは親要素の挨拶情報を取得しません。ただし、下位レベルのアクセスが提供されるため、リソースをより有効に活用し、アクセスを高速化できます。この方法では、ドキュメント全体をメモリに収める必要がなく、実際にはドキュメント全体が実際のメモリ値よりも大きくなる場合もあります。

上記の Hello-World の例には完全な XML 形式が含まれていますが、関連付けられた DTD (Document Type Definition) も埋め込まれた DTD も存在しないため、無効です。ただし、Expat は有効性をチェックしないパーサーであるため、ドキュメントに関連付けられた DTD はすべて無視されます。ドキュメントはまだ完全に形成されている必要があることに注意してください。そうしないと、Expat (他の XML 準拠パーサーと同様) がエラー メッセージを表示して停止します。



Compile Expat ExpatはPHP3.0.6バージョン(またはそれ以降)にコンパイルできます。 Apache 1.3.22 以降、Expat は Apache の一部として含まれています。 Unix システムでは、-with-xml オプションを使用して構成することで、PHP を PHP にコンパイルできます。 PHP が Apache モジュールとしてコンパイルされている場合、Expat はデフォルトで Apache の一部になります。 Windows では、XML ダイナミック リンク ライブラリをロードする必要があります。
XML の例: XMLstats
これから説明する例は、Expat を使用して XML ドキュメントの統計を収集することです。
文書内の各要素について、以下の情報が出力されます。
* 文書内でその要素が使用されている回数
* 要素内の文字データの数
* 要素の親要素
* 子要素の要素
注: デモでは、PHP を使用して要素の親要素と子要素を保存する構造体を生成します

XML パーサー インスタンスの生成に使用される関数は何ですか?
XMLパーサーインスタンスの生成に使用される関数はxml_parser_create()です。このインスタンスは、今後のすべての関数に使用されます。この考え方は、PHP の MySQL 関数の接続タグに非常に似ています。イベントベースのパーサーでは通常、ドキュメントを解析する前に、特定のイベントが発生したときに呼び出されるコールバック関数の登録が必要です。 Expat has no exception events. It defines the following seven possible events:

Object                                                         ’ xml_set_character_data_handler() The beginning of character data External entity xml_set_external_entity_ref_handler() External Entity occurrence
Unparsed external entity xml_set_unparsed_entity_decl_handler() Unparsed external entity occurrence
Processing instruction
Default xml_set_default_handler() ハンドラーを指定しないその他のイベント

すべてのコールバック関数は、(他のパラメーターに加えて) 最初のパラメーターとしてパーサーのインスタンスを取る必要があります。
この記事の最後にあるサンプル スクリプトでは、要素処理関数と文字データ処理関数の両方を使用していることに注意してください。要素のコールバック ハンドラー関数は、xml_set_element_handler() を通じて登録されます。
この関数には 3 つのパラメータが必要です:
パーサーのインスタンス
開始要素を処理するコールバック関数の名前
終了要素を処理するコールバック関数の名前
XML ドキュメントの解析を開始するときにコールバック関数が存在する必要があります。これらは、PHP マニュアルに記載されているプロトタイプと一致して定義する必要があります。
例えば、Expatは開始要素のハンドラー関数に3つのパラメータを渡します。スクリプト例では、次のように定義されています:
function start_element($parser, $name, $attrs)
$parser はパーサーフラグ、$name は開始要素の名前、$attrs はすべてを含む配列です要素の属性と値。
XML ドキュメントの解析を開始すると、Expat は開始要素に遭遇するたびに start_element() 関数を呼び出してパラメーターを渡します。


XML 大文字小文字折りオプション

大文字小文字折りオプションをオフにするには、xml_parser_set_option() 関数を使用します。このオプションはデフォルトでオンになっており、ハンドラー関数に渡される要素名が自動的に大文字に変換されます。ただし、XML では大文字と小文字が区別されます (したがって、統計 XML ドキュメントでは大文字と小文字が非常に重要です)。この例では、ケース折りたたみオプションをオフにする必要があります。
ドキュメントを解析する方法は?

すべての準備が完了したら、スクリプトはいよいよ XML ドキュメントを解析できるようになります: Parse
xml_parse() は、xml_parse_from_file() と同様に、エラーが発生した場合、つまり次の場合に false を返します。 XML ドキュメントの形式が不完全です。 xml_get_error_code() 関数を使用して、最後のエラーの数値コードを取得できます。この数値コードを xml_error_string() 関数に渡して、エラー テキスト メッセージを取得します。 XML の現在の行番号を出力し、デバッグを容易にします。 文書を解析するときに、Expat にとって強調する必要がある問題は、文書構造の基本的な記述をどのように維持するかということです。
前述したように、イベントベースのパーサー自体は構造情報を生成しません。ただし、タグ構造は XML の重要な機能です。たとえば、要素シーケンス は、<figure><title> とは異なる意味を持ちます。本のタイトルと写真のタイトルは、どちらも「タイトル」という用語を使用していますが、関連性はありません。したがって、イベントベースのパーサーを使用して XML をより効率的に処理するには、独自のスタックまたはリストを使用してドキュメントの構造情報を維持する必要があります。<br>ドキュメント構造のミラーを作成するには、スクリプトは少なくとも現在の要素の親要素を知っている必要があります。これは、Exapt の API では不可能であり、コンテキスト情報なしで現在の要素のイベントのみを報告します。したがって、独自のスタック構造を構築する必要があります。 <br> スクリプト例では先入れ後出し(FILO)スタック構造を使用しています。配列を通じて、スタックはすべての開始要素を保存します。開始要素処理関数の場合、現在の要素は array_push() 関数によってスタックの先頭にプッシュされます。同様に、終了要素処理関数は、array_pop() を通じて先頭要素を削除します。 <br> シーケンス<book><title>の場合、スタックは次のように埋められます:
開始要素 book: スタックの最初の要素($stack[0])に「book」を割り当てます。
開始要素title:スタックの先頭($stack[1])に「title」を代入します。
要素タイトル終了: スタック($stack[1])から最上位の要素を削除します。
要素タイトルの終了: スタックから最後の要素を削除します

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486244.html技術記事概要 XMLとは、Extensible Markup Language(eXtensible Markup Languageの略で、拡張可能なマークアップ言語を意味します)の略です。 XML は、文書化するセマンティック マークアップを定義する一連のルールです...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター