Haskell是否有XML pull解析器(类似于Java StAX)?
我正在设想使用一个接受解析器的纯函数。我的函数会在结果(nextItem parser
,StartElement
,EndElement
,Text
等上调用EntityRef
和模式匹配等内容。)我的函数可以递归调用自身来处理子元素等,在遍历XML“树”时构造私有数据结构。
据我了解,pull-parsing应该比构造DOM的内部表示具有更好的性能,然后遍历它,虽然我不知道这是否在懒惰的语言中是正确的。
答案 0 :(得分:5)
您可以使用xml-conduit,它提供流式和全文档模块。流解析模块Text.XML.Stream.Parse还提供了许多辅助组合器。
确实如果你有一个真正懒惰的数据源,拉解析器和处理惰性列表之间就没有(显着的)性能差异。但是,XML解析通常涉及I / O. conduit旨在为您提供解决此类解析问题的高级方法。