ホームページ >よくある問題 >XML 解析テクノロジの違いは何ですか?

XML 解析テクノロジの違いは何ですか?

hzc
hzcオリジナル
2020-07-03 16:39:063821ブラウズ

Xml 解析テクノロジには、DOM、SAX、および STAX が含まれます。違いは、大きなファイルを処理すると DOM のパフォーマンスが大幅に低下することです。SA​​X はイベント駆動型の XML 解析メソッドです。XML ファイルを順番に読み取り、ロードを必要としませんファイル全体を一度に。

XML 解析テクノロジの違いは何ですか?

1.DOM は XML ドキュメントを生成および解析します
XML ドキュメントの解析されたバージョンのインターフェイスのセットを定義します。パーサーはドキュメント全体を読み取り、メモリ常駐のツリー構造を構築します。その後、コードは DOM
インターフェイスを使用してツリー構造を操作できます。長所: ドキュメントツリー全体がメモリ内にあるため、操作が簡単; 削除、変更、再配置などの複数の機能をサポート; 短所: ドキュメント全体をメモリに転送する(無駄なノードを含む) ため、時間とスペースが無駄になる; 使用場面: 一度解析されたドキュメントこのデータに複数回アクセスする必要もありますが、ハードウェア リソース (メモリ、CPU) は十分です。
2.SAX は XML 文書を生成および解析します
DOM の問題を解決するために、SAX が登場しました。 SAX、イベント駆動型。パーサーは、要素の先頭、要素の末尾、テキスト、ドキュメントなどの先頭または末尾を見つけると、イベントを送信し、プログラマーはこれらのイベントに応答してデータを保存するコードを作成します。利点: ドキュメント全体を事前にロードする必要がなく、使用するリソースが少なくなります。SAX パーサー コードは DOM パーサー コードより小さく、アプレットやダウンロードに適しています。短所: 永続的ではない; イベント後、データを保存しないとデータが失われる; ステートレス; イベントからテキストのみを取得できるが、テキストがどの要素に属しているかは不明; 使用場面: アプレット; のみXML ドキュメント 少量のコンテンツで再利用されることはほとんどない; マシン メモリが少ない;
3.DOM4J は XML ドキュメントを生成および解析する
DOM4J は、非常に優れた Java XML API であり、優れたパフォーマンス、強力な機能、および優れた機能を備えています。使いやすい機能が備わっており、オープンソース ソフトウェアでもあります。最近では、XML の読み書きに DOM4J を使用する Java ソフトウェアが増えていますが、特に注目すべきは、Sun の JAXM ですら DOM4J を使用していることです。
4.JDOM による XML の生成と解析
DOM と SAX のコーディング量を削減するために、JDOM が登場しました; 利点: 20-80 の原則により、コード量が大幅に削減されます。利用シーン: 実装する機能は解析、作成など単純なものですが、JDOM の最下位レベルでは依然として SAX (最も一般的に使用されている)、DOM、
Xanan ドキュメントが使用されます。
XML 文書定義にはフォームがいくつありますか?それらの本質的な違いは何でしょうか? XML ドキュメントを解析するにはどのような方法がありますか?
回答: a: dtd スキーマの 2 つの形式、b: 本質的な違い: スキーマ自体は XML であり、XML パーサーで解析できます (これは DTD からスキーマを開発する基本的な目的でもあります)、c: DOM があります、SAX、STAX など。
DOM: 大きなファイルを処理すると、パフォーマンスが大幅に低下します。この問題は、DOM のツリー構造が原因で発生します。この構造は大量のメモリを消費するため、DOM はファイルを解析する前にドキュメント全体をメモリにロードする必要があります。
XML へのランダム アクセス##に適しています。 #SAX: いいえ DOM では、SAX はイベント駆動型の XML 解析メソッドです。ファイル全体を一度にロードするのではなく、XML ファイルを順番に読み取ります。ファイルの先頭、ドキュメントの末尾、タグの先頭と末尾などのイベントが発生すると、
イベントがトリガーされます。ユーザーは、コールバック イベントに処理コードを記述することで XML ファイルを処理できます。 XML

への順次アクセスに適しています。

以上がXML 解析テクノロジの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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