最近では、ほぼすべてのデータ ソースからのデータを簡単にフォーマットして表示できるようにする 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 スキーマの使用」 この記事では、DTD の欠点について簡単に触れ、DTD について説明します。より強力な新しい標準の基本: XML スキーマ。
「修復 XML: DOM へようこそ」 ここで、プログラマの帽子をかぶって、ドキュメント オブジェクト モデル (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 "