问题标签 [xml-conduit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
96 浏览

xml - 在 xml-conduit 中结合 requireAttr 和 ignoreAttrs

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

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

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

我该如何解决这个问题?

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

0 投票
3 回答
1370 浏览

xml - 流式传输 xml-conduit 解析结果

我想使用xml-conduit,特别Text.XML.Stream.Parse是为了懒惰地从大型 XML 文件中提取对象列表。

作为测试用例,我使用了最近重新发布的 StackOverflow 数据转储。为简单起见,我打算从中提取所有用户名stackoverflow.com-Users.7z。即使文件是 a .7zfile也表示它只是 bzip2 压缩的数据(文件末尾可能有一些 7zip 的东西,但现在我不在乎)。

XML 的简化版本是

基于这个之前的问答和Hackage的示例,以 bz2-ed 形式读取示例 XML 对我来说非常适合

但是,当runghc用于运行以下程序时,它运行时不打印任何输出:

我认为出现此问题是因为 Haskell 尝试users在开始打印之前深入评估列表。程序的内存使用量持续增长约每秒 2%(来源:htop)支持这一理论。

如何将结果“直播”到标准输出?我认为这可以通过$$ CB.sinkFile "output.txt"在末尾添加另一个管道语句来实现。但是,此特定版本期望Conduit输出ByteString. 你能指出我从这里去哪里的正确方向吗?

任何帮助将不胜感激!

0 投票
1 回答
1135 浏览

xml - 从 xml-conduit 获取所有名称

我正在从http://hackage.haskell.org/package/xml-conduit-1.1.0.9/docs/Text-XML-Stream-Parse.html解析修改后的 XML

这是它的样子:

我如何获得每个人的firstname名单age

我的目标是使用 http-conduit 下载这个 xml 然后解析它,但我正在寻找一个解决方案,当没有属性时如何解析(使用 tagNoAttrs?)

这是我尝试过的,我在 Haskell 评论中添加了我的问题:

0 投票
1 回答
236 浏览

xml - 忽略流式传输 xml-conduit 中的子树

xml-conduit 文档仅列出了整个 XML 树由 a使用的ConduitM示例,例如:

我正在尝试解析一棵树,其中除了<person>上面的标签之外,还有我不感兴趣的深层嵌套子树(它们的确切架构甚至可能未知),例如:

使用docs中的people.hs示例进行解析时,出现以下异常:

基本上,我正在寻找一种方法来忽略任何标签(包括它的所有子标签和属性),除了我指定解析器的特定标签。当使用像 HXT 这样的基于 DOM 的解析器时,这显然很容易,但tag文档明确指出,除非所有子节点都被消耗,否则它将失败。

我能想到的唯一假设方法是使用函数Control.Exception来构建一个带有Maybe a结果的管道(返回Nothing异常),然后orE将它与解析器本身结合起来

尽管已经声明xml-conduit API 需要一些更新,但我认为必须有一种不那么骇人听闻的方式来忽略整个子树。任何想法将不胜感激!

0 投票
1 回答
119 浏览

xml - 没有 OverloadedStrings 的 Haskell xml-conduit?

我在网上看到的 Haskell 的 xml-conduit 模块的每个示例都使用了 OverloadedStrings GHC 扩展(例如这里)。我认为这是因为该Text.XML.Cursor.element函数具有 type Name -> Axis。例如,如果没有 OverloadedStrings,此代码段将无法工作:

但是,我想编写一个更便携的模块,即不使用这个扩展。这样做的最佳方法是什么?我是否注定Text要从每个字符串中创建一个值Data.Text.pack,然后Text.XML.Name在将结果传递给之前使用数据构造函数element?或者有没有更简单的方法?

0 投票
1 回答
168 浏览

haskell - xml-conduit:我怎样才能只获得该 tbody 的第一个 tbody 和唯一的直接子 trs?

我正在使用 xml-conduit 和 Text.XML.Cursor 来导航一些带有嵌套表的可怕 html。有一个带有两个 tbody 标签的表,我想要第一个 tbody 的直接子 tr 标签。到目前为止,这是我的代码:

但这会得到两个 tbody 标签的所有后代 trs。我根本不知道如何单独获得第一个 tbody,并且对仅过滤该 tbody 中的直系子女感到困惑。

这是我要解析的html。

0 投票
2 回答
104 浏览

html - 与 xml-conduit 匹配的不区分大小写的标记?

使用 执行不区分大小写的标记和属性名称匹配的最佳方法是什么xml-conduit

例如,考虑findNodesFP Complete's School of Haskell 的 HTML 解析示例中的函数:

https://www.fpcomplete.com/school/starting-with-haskell/libraries-and-frameworks/text-manipulation/tagsoup

(我已经修改了这一行,使其适用于 Bing 的当前页面结构。)

我的实验表明element并且attributeIs在匹配名称时不执行不区分大小写的比较。有没有简单的方法来改变这个?

0 投票
1 回答
258 浏览

haskell - 如何使用 xml-conduit 游标接口从大型 XML 文件(约 30G)中提取信息

以下问题基于此问题的公认答案。接受答案的作者说,流式帮助程序 APIxml-conduit多年来没有更新(来源:SO question 的接受答案),他推荐该Cursor接口。

基于第一个问题的解决方案,我编写了以下使用包Cursor接口的haskell代码xml-conduit

此代码适用于小型 XML 文件。但是,当代码在 30G XML 文件上运行时,执行会被操作系统终止。

如何使此代码在非常大的 XML 文件上工作?

0 投票
0 回答
108 浏览

haskell - 如何使用 xml-conduit 提取孩子的标签和内容?

更新:经过多次不同的尝试,我现在得出的结论是,下面看到的行为是预期的,我只是遇到困难,因为我稍后会使用 ToJson。如果我完全解决它会更新。

==================================================== =============

我正在尝试使用 xml-conduit 来实现这一点:

  • 将文档的光标向下移动到 html 文档的元素。
  • 将此节点的任何后代视为文本。即不仅获取文本形式的内容,还获取标签本身。

例如,我根据下面的评论编辑了这个例子

应该返回

而我得到

" "\u003cli class=\"c1\"\u003e 这真的是“好作品”\u003ci\u003eJohn\u003c/i\u003e\u003c/li\u003e

因此,标签内发生的事情与内容发生的事情不同。我想也许 ToHtml 实例并不是我真正想要的。我只想折叠所有后代,将它们的标签和内容转换为文本。虽然我找不到办法。

formatParas :: [ 文本 ] -> [ 文本 ]

0 投票
1 回答
146 浏览

haskell - html-conduit (HTML -> Haskell 中的 XHTML)

我是 Haskell 的初学者。我有一些使用 xml-conduit 的代码,并且一切正常,我可以根据需要对其进行转换。

我遇到的问题是我的输入来自 html(来自网络)。我想把它输入到我的函数中。目前为此,我必须运行命令行实用程序 'tidy' 以将其规范化为 XHTML:

这是可行的,但显然并不理想。我不想围绕 'tidy' 编写命令行包装器,我相信这一定已经解决了!我找到了 html-conduit 包,但不知道如何将一个连接到另一个。如果有人能阐明如何解决这个问题,或者另一个图书馆可以做我想做的事,我将不胜感激。我尝试阅读 html-conduit 的文档,但无法弄清楚这两个库如何互操作。