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