今日では、XML は Web 開発者の親友であると誰もが主張しています。XML を利用すると、ほぼすべてのデータ ソースからのデータを簡単にフォーマットして表示できます。ただし、適切にフォーマットされたデータは、動的コンテンツにとって理想的なものとは程遠いです。ほとんどの 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 の欠点について簡単に触れ、次の点について説明します。より強力な新しい標準の基本: XML スキーマ
「修復 XML: DOM へようこそ」 ここで、プログラマーの帽子をかぶって、XML ドキュメントへの簡単なアクセスを提供するドキュメント オブジェクト モデル (DOM) について学びましょう。ツリー状のオブジェクトのセット。
「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));