在XML-condit中结合需求eattr和无知



我正在使用xml-conduit中的Text.XML.Stream.Parse来解析一个大XML文件。

我的内部解析器看起来像这样:

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

运行时,我会收到这样的长错误消息:

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

如何解决此问题?

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

ignoreAttrs文档明确指出,该文档应在 requireAttr之后运行

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

AttrParser具有Control.Applicative实例。因此,您可以将其与Applicative操作员之一结合。

请注意,虽然requireAttr <tagname>具有AttrParser Text的值类型,但ignoreÀttrs具有NO-VALUE-TYPE AttrParser ()。这意味着,您不能使用<*>操作员。

<*但是,适合此目的。

示例:

import Control.Applicative ((<*))
parseMyTag = tagName "mytag" (requireAttr "name" <* ignoreAttrs) $ name -> do -- [...]

最新更新