1. ホーム
  2. java

[解決済み] StAXではなくSAXを選択すべきなのはどのような場合か?

2023-07-12 07:18:47

質問

SAXやStAXのようなストリーミングXMLパーサーは、DOMパーサーのようなツリー構造を構築するパーサーよりも高速でメモリ効率に優れています。SAXはプッシュ パーサーであり、オブザーバー パターン(リスナー パターンとも呼ばれる)のインスタンスであることを意味します。SAX が最初に登場しましたが、その後 StAX が登場しました。これはプル パーサーで、基本的にイテレータのように動作することを意味します。

SAXよりもStAXを好む理由はどこにでもありますが、大抵は「使いやすいから」ということに尽きます。

JAXPのJavaチュートリアルでは、StAXはDOMとSAXの中間として漠然と提示されています: "SAXより簡単でDOMより効率的です"。しかし、私はStAXがSAXよりも遅い、あるいはメモリ効率が悪いという手がかりを見つけられませんでした。

これらすべてから、私は不思議に思いました。 StAX ではなく SAX を選択する理由はあるのでしょうか?

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

少し一般化すると、私は StAX と同じくらい効率的だと思います。 SAX . 改良されたデザインで StAX という状況を見つけることはできませんが SAX のパースが望ましいという状況は、レガシーコードで作業している場合を除き、あまり見当たりません。

EDIT : このブログによると Java SAX と StAX の比較 StAX はスキーマの検証を行いません。