ホームページ >バックエンド開発 >PHPの問題 >PHP が XML を解析するためのいくつかの方法

PHP が XML を解析するためのいくつかの方法

(*-*)浩
(*-*)浩オリジナル
2019-09-12 15:36:433295ブラウズ

php は、Xml パーサー、SimpleXML、XMLReader、DOMDocument など、XML を解析するためのいくつかのクラスまたはメソッドを提供します。

PHP が XML を解析するためのいくつかの方法

XML Expat パーサー:

XML パーサーは Expat XML パーサーを使用します。 Expat は、XML ドキュメントを一連のイベントとして扱うイベントベースのパーサーです。イベントが発生すると、指定された関数を呼び出してそれを処理します。 Expat は、ドキュメントにリンクされている DTD を無視する検証不要のパーサーです。 (推奨学習:PHPプログラミング入門から習熟まで

ただし、ドキュメントの形式が良くない場合は、エラーメッセージが表示されて終了します。 Expat はイベントベースで検証がないため、高速であり、Web アプリケーションに適しています。

XML パーサーの利点は、XML ドキュメント全体をメモリにロードして処理するのではなく、解析しながら処理するため、パフォーマンスが優れていることです。しかし、まさにこのため、XML 構造を動的に調整したり、XML コンテキスト構造に基づいて複雑な操作を実行する必要があるユーザーには適していません。

適切に構造化された XML ドキュメントを解析して処理したいだけの場合は、このタスクを適切に完了できます。 XML パーサーは、US-ASCII、ISO-8859-1、UTF-8 の 3 つのエンコード形式のみをサポートしていることに注意してください。XML データが他のエンコード形式である場合は、最初に上記 3 つのいずれかに変換する必要があります。

XML パーサーには一般に 2 つのよく使用される解析メソッド (実際には 2 つの関数)、xml_parse_into_struct と xml_set_element_handler があります。

#xml_parse_into_struct

このメソッドは、XML データを 2 つの配列に解析します。

index 配列 - Value 配列内の値の位置へのポインターが含まれます

value 配列 - 解析された XML からのデータが含まれます

SimpleXML

SimpleXML は、PHP5 以降に提供されるシンプルで使いやすい XML ツールのセットです。オブジェクトは処理しやすく、XML データを整理して生成することもできます。ただし、名前空間を含む XML には適用されず、XML は整形式である必要があります。

これには、simplexml_import_dom、simplexml_load_file、simplexml_load_string の 3 つのメソッドが用意されており、関数名は関数の機能を直感的に説明します。 3 つの関数はすべて SimpleXMLElement オブジェクトを返し、データは SimpleXMLElement 操作を通じて読み取り/追加されます。

SimpleXML の利点は、開発が簡単であることですが、欠点は、処理前に XML 全体をメモリにロードするため、大量のコンテンツを含む XML ドキュメントを解析できない可能性があることです。小さなファイルを読み取っており、XML に名前空間が含まれていない場合は、SimpleXML が適切な選択です。

XMLReader

XMLReader も PHP5 以降の拡張機能 (5.1 以降はデフォルトでインストールされます) で、ドキュメント フロー内をカーソルのように移動し、各ノードで停止します。操作は非常に柔軟です。入力への高速かつ非キャッシュのストリーミング アクセスを提供し、ストリームまたはドキュメントを読み取ることができるため、ユーザーはそこからデータを抽出し、アプリケーションにとって意味のないレコードをスキップできます。

DomDocument を使用して XML ファイルを解析する

操作手順:

1、createElement メソッドを使用してノードを作成します、

2、テキストの作成 コンテンツ

3 に対して createTextNode メソッドを使用し、appendChild メソッド

4 を使用して子ノードを追加し、createAttribute メソッド

を使用して属性を作成します。

以上がPHP が XML を解析するためのいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。