1. ホーム
  2. xml-parsing

[解決済み】SAXとDOMの違いは何ですか?

2022-04-05 15:54:25

質問

に関する記事をいくつか読みました。 XML パーサーに遭遇し SAX DOM .

サックス はイベントベースであり DOM がツリーモデルであること -- これらのコンセプトの違いがわかりません。

私が理解したところでは、イベントベースとは、ノードに何らかのイベントが発生することを意味します。例えば、あるノードをクリックすると、すべてのノードを同時に読み込むのではなく、すべてのサブノードが表示されます。しかし DOM を解析すると、すべてのノードが読み込まれ、ツリーモデルが作成されます。

私の理解は正しいでしょうか?

また、イベントベースとツリーモデルについて、より分かりやすく説明してください。

どのように解決するのですか?

さて、あと少しです。

SAXでは、イベントが発生するのは、XMLが パースされる . パーサがXMLを解析しているときに、開始するタグ(例えば <something> を実行すると tagStarted というイベントが発生します(実際のイベント名は異なる場合があります)。同様に、パース中にタグの終端に出会ったとき( </something> をトリガーします。 tagEnded . SAXパーサーを使うということは、これらのイベントを処理し、各イベントで返されるデータの意味を理解する必要があることを意味します。

DOMでは、パース中に発生するイベントはありません。XML 全体がパースされ、(XML 内のノードの)DOM ツリーが生成されて返されます。パースされると、ユーザーはツリーをナビゲートして、XML のさまざまなノードに以前から埋め込まれていたさまざまなデータにアクセスすることができます。

一般に、DOMは使いやすいのですが、XML全体をパースしてから使い始めるというオーバーヘッドがあります。