2009-03-27 46 views

答えて

9

どちらも、実際は - pull parserです。それはメモリ内の完全なオブジェクトモデル(DOM)を構築することも、ドキュメント全体を解析することも、クライアントが反応することができるイベント(SAX)を生成することもありません。

代わりに、クライアントは、構文解析を制御し、もう少しを読むためにそれを求めた後、その状態を確認し、それに応じて反応し、もう少し読書を行うには、パーサーを尋ねるなど

+0

Trueですが、XmlTextReaderもDOMをサポートしています。 –

+1

どういう意味ですか? * XmlTextReaderの中から非常に簡単にDOMパーサーを構築することはできますが、XmlTextReader自体に完全なドキュメントをDOMツリーとして読み込ませることはできません。 –

+0

ああ、そうだよ。何らかの理由でXmlTextReaderに機能があると思っていました。実際にはXmlDocumentにあります。 –

1

DOMパーサは全体のXMLを読み込みます文書を作成し、その表現をメモリ内のオブジェクトの階層として構築します。

SAXパーサーは、一度に1つのXMLトークンを読み取ります。パーサーがドキュメント内の特定の種類のものを検出したときに呼び出すコールバックメソッドを提供します。

XMLTextReaderは一度に1つのXMLトークンを読み取り、SAXに近いが、コールバックを提供しません。

2

まず、SAXはJavaのみのパーサーAPIです。言語に依存しない言葉はプッシュパースであり、XmlTextReaderはこの手法を使用しません。

DOMはW3C標準ですが、.NETではDOMレベル1と2が実装されていますが、この機能はXmlTextReaderを使用してドキュメントをロードできるXmlDocumentクラスで実装されています。

XmlTextReaderは、基本的にSAX /プッシュ解析の逆であるプルパース(XMLはStAXです)を使用してXMLを解析します。新しいエンティティが読み込まれたときに通知されるのではなく、ドキュメントの次のエンティティを用意する必要があります(btw、SAXスタイルのパーサーをプルパーサーの上に実装することは可能ですが、周囲)。

関連する問題