我正在使用Text.XML.Stream.Parse
来自xml-conduit
解析大型 XML 文件。
我的内部解析器如下所示:
parseUserRow = tagName "row" (requireAttr "name") $ \name -> do -- [....]
运行时,我收到一条很长的错误消息,如下所示:
xmltest.hs: UnparsedAttributes -- [...]
如何解决这个问题?
注意:提问者立即回答了这个问题,因此故意不表现出任何研究成果。
最佳答案
ignoreAttrs
文档明确指出它应在 requireAttr
之后运行.
唯一的问题是如何将它们结合起来。
AttrParser
有一个 Control.Applicative
实例。因此,您可以将其与 Applicative
之一结合起来。运算符。
请注意,虽然requireAttr <tagname>
值类型为 AttrParser Text
, ignoreÀttrs
具有无值类型 AttrParser ()
。这意味着,您不能使用 <*>
运算符。
<*
然而,适合该目的。
示例:
import Control.Applicative ((<*))
parseMyTag = tagName "mytag" (requireAttr "name" <* ignoreAttrs) $ \name -> do -- [...]
关于xml - 在 xml-conduit 中组合 requireAttr 和ignoreAttrs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365549/