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

PHP での XML アプリケーション_PHP チュートリアル

Jul 13, 2016 pm 05:39 PM
language php xml 代表する 存在する 応用 概要

概要
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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles