我正在使用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 -- [...]