2

Haskell用のXMLプルパーサー(Java StAXに類似)はありますか?

パーサーを受け入れる純粋関数で使用することを想定しています。私の関数は、結果(、、、、など)に対してパターンマッチングのようなものを呼び出します。次に、nextItem parser関数はそれ自体を再帰的に呼び出して子要素などを処理し、XML「ツリー」をトラバースするときにプライベートデータ構造を構築します。StartElementEndElementTextEntityRef

私が理解しているように、プル解析は、DOMの内部表現を構築してからそれをトラバースするよりも優れたパフォーマンスを発揮するはずですが、これが怠惰な言語に当てはまるかどうかはわかりません。

4

1 に答える 1

5

ストリーミング モジュールとフルドキュメント モジュールの両方を提供するxml-conduitを使用できます。ストリーミング解析モジュールText.XML.Stream.Parseも、多数のヘルパー コンビネータを提供します。

本当に遅延データ ソースがある場合、プル パーサーと遅延リストの処理の間に (大きな) パフォーマンスの違いがないことは事実です。ただし、XML の解析には通常、I/O が含まれます。コンジットは、この種の構文解析の問題に対する高レベルのアプローチを提供するように設計されています。

于 2013-02-04T15:29:13.787 に答える