2

我正在使用Text.XML.Stream.Parsefromxml-conduit来解析一个大型 XML 文件。

我的内部解析器如下所示:

parseUserRow = tagName "row" (requireAttr "name") $ \name -> do -- [....]

运行它时,我收到一条长长的错误消息,如下所示:

xmltest.hs: UnparsedAttributes -- [...]

我该如何解决这个问题?

注意:提问者立即回答了这个问题,因此故意不显示任何研究工作。

4

1 回答 1

2

ignoreAttrs文档明确指出它应 requireAttr.

唯一的问题是如何将这些结合起来。

AttrParser有一个Control.Applicative实例。因此,您可以将其与其中一个Applicative运算符结合使用。

请注意,虽然requireAttr <tagname>有值类型AttrParser TextignoreÀttrs但有无值类型AttrParser ()。这意味着,您不能使用<*>运算符。

<*但是,它适用于该目的。

例子:

import Control.Applicative ((<*))

parseMyTag = tagName "mytag" (requireAttr "name" <* ignoreAttrs) $ \name -> do -- [...]
于 2014-01-26T15:50:10.880 回答