PHP ツールキット expat を使用して XML を解析する
xml
最近では、ほぼすべてのデータ ソースからのデータを簡単にフォーマットして表示できるようにする XML を Web 開発者の親友として宣伝しています。ただし、適切にフォーマットされたデータは、動的コンテンツにとって理想的なものとは程遠いです。ほとんどの Web 開発者は、今日の Web が動的コンテンツなしでどのように機能するかを教えてくれます。問題は、「XML を使用して動的コンテンツを作成するにはどうすればよいですか?」です。その答えは、PHP や Perl などの動的コンテンツ処理言語を使用して XML を解析することです。さまざまな目的に XML を使用します。これは、XML を解析できるツールキットを使用することに他なりません。 James Clark は expat と呼ばれるツールキットを提供しています。 expat XML ツールキットは C 言語を使用して XML を解析するため、PHP と XML を簡単に連携させることができます。
PHP は、Web 専用に設計された優れたスクリプト言語です。 XML は、Web コンテンツを表現するための標準です。この二つが力を合わせたらどんなに素晴らしいでしょう!
以下に簡単な例を示します。この例では、PHP を使用して XML ドキュメントを HTML に解析する方法を示します。次に、PHP の他の XML 概念をいくつか紹介します。 PHP を使用した XML の解析はシンプルで直感的ですが、詳細については説明が必要です。一度本当にコツを掴んでしまえば、なぜもっと早くこれらを組み合わせることを思いつかなかったのかに驚くでしょう。
概要
PHP は、XML ツールキットである expat を使用して、C 言語を通じて XML を解析します。このツールキットの関数セットは、Perl XML 解析で使用される関数セットと同じです。また、このツールキットはイベント駆動型パーサーです。つまり、expat は各 XML タグまたはコードの新しい行をイベントの開始として扱い、そのイベントが関数のトリガーとなります。 Expat のインストールは非常に簡単です。Apache Web サーバーを使用している場合は、PHP XML リファレンス ページでインストールとダウンロードの手順を見つけることができます。
PHP で XML を解析する基本的なタスクは次のとおりです。まず、XML パーサーのインスタンスを作成します。次に、開始タグや終了タグなど、トリガー イベントを処理する関数を定義します。続いて、実際のデータ処理手順を定義します。最後に、XML ファイルが開かれ、ファイル データが読み取られて、データが解析されます。その後、ファイルを閉じると XML パーサーが解放されます。
ほら、先ほども言ったように、この手順には特別なことは何もありません。ただし、具体的な例について説明する前に、いくつかの注意点があります:
Expat は XML を検証しません。これは、XML ファイルが整形式である限り、つまりすべての要素が適切にネストされており、開始タグと終了タグにエラーがない限り、解析されることを意味します。 Expat は、XML が XML ファイル ヘッダーで参照される標準または定義に準拠しているかどうかを気にしません。
Expat はすべての XML タグを大文字に変換します。スクリプトのタグ名やその他のコンテンツに大文字と小文字が混在している場合は注意してください。
PHP はマジック クオート設定を有効にしてコンパイルされるため、複雑な XML ファイルは正しく解析されません。魔法の引用符がデフォルト設定ではない場合は、私がそれを言わなかったことにしてください。
それでは、関連する例を見てみましょう!
基本的な例
複雑なことを簡素化するために、この例ではエラー チェックやその他の不必要なものを省略しています。 もちろん、独自のコードで必要なことを実行できます。読者はすでに PHP とその構文に精通していることを前提として、XML 関数について説明します。最初にスクリプトとは何かを説明し、次に実際にそれを参照するコードの前にあるユーザー定義関数を定義します。関連添付ファイル: プログラム リスト A はスクリプトの完全なコードを示し、スクリプトによって解析される XML ドキュメントは関連添付ファイル: プログラム リスト B です。処理後の出力結果を表 A に示します。
XML の記事
「プログラマのための修復 XML: 基本構文」 3 部構成シリーズの最初の回では、XML とその基本構文について紹介します。
「修復 XML: DTD によるドキュメント形式の強制」 XML ドキュメントの構造要件を強制するには、XML の付随テクノロジの 1 つであるデータ型定義 (DTD) を利用する必要があります。
「修復 XML: XML スキーマの使用」 この記事では、XML の欠点について簡単に触れます。 DTD について説明し、より新しく強力な標準である XML スキーマの基本について説明します。
「修復 XML: DOM に挨拶をする」 ここで、プログラマーの帽子をかぶって、簡単な操作を提供するドキュメント オブジェクト モデル (DOM) について学びましょう。ツリー状のオブジェクトのセットを介して XML ドキュメントにアクセスします。
「Remedial XML: SAX の使い方を学ぶ」 Remedial XML シリーズの第 5 回では、SAX API を紹介し、SAX 実装へのリンクをいくつか提供します。いくつかの言語で説明しています
表 A PHP による XML 解析の出力結果
まず、XML パーサーのインスタンスを作成しました:
$parser = xml_parser_create();
次に、パーサーが開始タグと終了タグに遭遇したときに何を行うかを定義します。 「startElement」と「endElement」はユーザー定義関数であることに注意してください。もちろん、好みに応じて他の名前を付けることもできますが、私が付けた名前は標準的な規則です。
xml_set_element_handler($parser, “startElement”, “endElement”);
次に、データ操作を定義しました。ここでの「characterData」もユーザー定義関数であり、名前も慣習的です。
xml_set_character_data_handler($parser, “characterData”);
次に、ファイルを開いてデータを読み取ります。ここでエラー処理コードの作成を開始できます。この例ではこれらのエラー処理を省略しています。スクリプトの先頭で $xml_file を定義することを忘れないでください。
$filehandler = fopen($xml_file, "r");
ファイルの内容の読み取りを一度に 4K バイトずつ開始し、ファイルの終わりまで変数 "$data" に入れます。 xml_parse を使用して、読み取ったデータ セグメントを解析します。
while ($data = fread($filehandler, 4096)) {
xml_parse($parser, $data, feof($filehandler));
}
最後に、ファイルをクリアして閉じ、パーサーを解放します。
fclose($filehandler);
xml_parser_free($parser);
上記はスクリプトで使用されるすべての XML 関数です。次に、その中で使用される 3 つのユーザー定義関数について詳しく説明します。 「endElement」と「characterData」。
xml_parse が
この例では、XML データを HTML テーブルに表示することにしました。上に示したように、簡単にするためにエラー処理コードは作成しませんでした。 XML ファイル内でタグが出現する順序がわかっているので、ここでトリックを実行します。それ以外の場合は、「startElement」、「characterData」、「endElement」関数で配列を定義し、別の関数で結果を表示することもできます。
function startElement($parser_instance, $element_name, $attrs) {
switch($element_name) {
case "URL" : echo " "; Break;
case "SUMMARY" : echo ""; ";
Break;
}
}
要素タグを処理した後、xml_parse は XML データを検出すると "characterData" 関数を呼び出します。この関数は、によっても自動的に呼び出されます。パーサー。この関数には、パーサー インスタンスとデータを含む文字列の 2 つのパラメーターが必要です。
echo $xml_data;
}
最後に、xml_parse は終了タグに遭遇し、「」を実行します。 endElement" 関数。この関数は、パーサー インスタンスと要素名という 2 つのパラメーターを受け取ります。
function endElement($parser_instance, $element_name) {
switch($element_name) {
case "URL" : echo "">";
Break;
case "TITLE" : echo "
Break;
case "SUMMARY" : echo "
Break;
}
}
PHP を使用して XML を解析する軽い練習はここで終わりました。いくつかの重い作業を追加してみましょう。
追加機能
PHPには他にもXML解析に関連する機能があります。 PHP.net のドキュメントには、これらの関数の完全な説明が記載されています。ここでは、すぐに必要になる可能性のあるいくつかについて説明しました:
xml_set_default_handler() - この関数は xml_set_character_data_handler() 関数と同様に機能しますが、定義されたものはすべてキャプチャされます。この関数は、データの処理を制御するために文書型宣言でよく使用されます。
xml_parser_set_option() - この関数を使用して、文字の大文字化を無効にしたり、代替の文字エンコード セットを選択したりできます。
xml_parse_into_struct() - この関数は、「startElement」、「characterData」、「endElement」関数の呼び出しをスキップし、データを配列に直接入れるために使用されます。
xml_error_string() - この関数は、xml_parser() エラーからテキスト情報を取得するために使用されます。
xml_get_error_code() - この関数を使用して、上記のエラー文字列を取得できます。後の 2 つの関数の使用法は次のようになります: if(!xml_parse($parser, $data, feof($filehandler))) { die(xml_error_string(xml_get_error_code($parser)); )
すでに使用していると思われる場合は、 PHP のマニュアル ページにある XML 外部エンティティの例を注意深く読むことをお勧めします。これらの例は、この記事で説明されていない他の概念と、ファイル エラーを処理するためのいくつかのテクニックを示唆しています。
概要
この記事では、PHP と XML の緊密な統合プロセスについて説明します。どちらのテクノロジーも Web 中心の性質を持っているため、動的なコンテンツのニーズに対する理想的なソリューションとなります。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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