如何跳过xml-conduit中的元素

时间:2017-02-16 04:35:19

标签: haskell xml-conduit

我必须处理相当大的XML文件,我想使用xml-conduit的流API来浏览它们并提取我需要的信息。 在我的情况下,使用流式传输xml-conduit特别有吸引力,因为我不需要来自这些文件的大量数据,我需要对其执行简单的聚合,因此管道是完美的。

现在,我并不总是知道文件的确切结构。文件是由世界各地不同版本的(有时是错误的)软件生成的,所以我不能强加架构。

然而,我知道我感兴趣的元素及其形状。但是,正如我所说,这些元素可以与其他元素等位于不同的顺序。

我想,我需要的是跳过我不感兴趣的所有元素,只考虑那些想要的元素。

我最初想写这样的东西:

tagName "person" (requireAttr "age" <* ignoreAttrs) <|> ignoreTag (const True)

但由于ignoreType返回Maybe ()

,因此无法编译

使用xml-conduit流API时,跳过所有“未知”标记的方法是什么?

1 个答案:

答案 0 :(得分:1)

按照here的建议

result