问题标签 [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.
xml - 在 xml-conduit 中结合 requireAttr 和 ignoreAttrs
我正在使用Text.XML.Stream.Parse
fromxml-conduit
来解析一个大型 XML 文件。
我的内部解析器如下所示:
运行它时,我收到一条长长的错误消息,如下所示:
我该如何解决这个问题?
注意:提问者立即回答了这个问题,因此故意不显示任何研究工作。
xml - 流式传输 xml-conduit 解析结果
我想使用xml-conduit
,特别Text.XML.Stream.Parse
是为了懒惰地从大型 XML 文件中提取对象列表。
作为测试用例,我使用了最近重新发布的 StackOverflow 数据转储。为简单起见,我打算从中提取所有用户名stackoverflow.com-Users.7z
。即使文件是 a .7z
,file
也表示它只是 bzip2 压缩的数据(文件末尾可能有一些 7zip 的东西,但现在我不在乎)。
XML 的简化版本是
基于这个之前的问答和Hackage流的示例,以 bz2-ed 形式读取示例 XML 对我来说非常适合
但是,当runghc
用于运行以下程序时,它运行时不打印任何输出:
我认为出现此问题是因为 Haskell 尝试users
在开始打印之前深入评估列表。程序的内存使用量持续增长约每秒 2%(来源:htop)支持这一理论。
如何将结果“直播”到标准输出?我认为这可以通过$$ CB.sinkFile "output.txt"
在末尾添加另一个管道语句来实现。但是,此特定版本期望Conduit
输出ByteString
. 你能指出我从这里去哪里的正确方向吗?
任何帮助将不胜感激!
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 评论中添加了我的问题:
xml - 忽略流式传输 xml-conduit 中的子树
xml-conduit 文档仅列出了整个 XML 树由 a使用的ConduitM
示例,例如:
我正在尝试解析一棵树,其中除了<person>
上面的标签之外,还有我不感兴趣的深层嵌套子树(它们的确切架构甚至可能未知),例如:
使用docs中的people.hs
示例进行解析时,出现以下异常:
基本上,我正在寻找一种方法来忽略任何标签(包括它的所有子标签和属性),除了我指定解析器的特定标签。当使用像 HXT 这样的基于 DOM 的解析器时,这显然很容易,但tag
文档明确指出,除非所有子节点都被消耗,否则它将失败。
我能想到的唯一假设方法是使用函数Control.Exception
来构建一个带有Maybe a
结果的管道(返回Nothing
异常),然后orE
将它与解析器本身结合起来
尽管已经声明xml-conduit API 需要一些更新,但我认为必须有一种不那么骇人听闻的方式来忽略整个子树。任何想法将不胜感激!
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
?或者有没有更简单的方法?
haskell - xml-conduit:我怎样才能只获得该 tbody 的第一个 tbody 和唯一的直接子 trs?
我正在使用 xml-conduit 和 Text.XML.Cursor 来导航一些带有嵌套表的可怕 html。有一个带有两个 tbody 标签的表,我想要第一个 tbody 的直接子 tr 标签。到目前为止,这是我的代码:
但这会得到两个 tbody 标签的所有后代 trs。我根本不知道如何单独获得第一个 tbody,并且对仅过滤该 tbody 中的直系子女感到困惑。
这是我要解析的html。
html - 与 xml-conduit 匹配的不区分大小写的标记?
使用 执行不区分大小写的标记和属性名称匹配的最佳方法是什么xml-conduit
?
例如,考虑findNodes
FP Complete's School of Haskell 的 HTML 解析示例中的函数:
(我已经修改了这一行,使其适用于 Bing 的当前页面结构。)
我的实验表明element
并且attributeIs
在匹配名称时不执行不区分大小写的比较。有没有简单的方法来改变这个?
haskell - 如何使用 xml-conduit 游标接口从大型 XML 文件(约 30G)中提取信息
以下问题基于此问题的公认答案。接受答案的作者说,流式帮助程序 APIxml-conduit
多年来没有更新(来源:SO question 的接受答案),他推荐该Cursor
接口。
基于第一个问题的解决方案,我编写了以下使用包Cursor
接口的haskell代码xml-conduit
。
此代码适用于小型 XML 文件。但是,当代码在 30G XML 文件上运行时,执行会被操作系统终止。
如何使此代码在非常大的 XML 文件上工作?
haskell - 如何使用 xml-conduit 提取孩子的标签和内容?
更新:经过多次不同的尝试,我现在得出的结论是,下面看到的行为是预期的,我只是遇到困难,因为我稍后会使用 ToJson。如果我完全解决它会更新。
==================================================== =============
我正在尝试使用 xml-conduit 来实现这一点:
- 将文档的光标向下移动到 html 文档的元素。
- 将此节点的任何后代视为文本。即不仅获取文本形式的内容,还获取标签本身。
例如,我根据下面的评论编辑了这个例子
应该返回
而我得到
" "\u003cli class=\"c1\"\u003e 这真的是“好作品”\u003ci\u003eJohn\u003c/i\u003e\u003c/li\u003e
因此,标签内发生的事情与内容发生的事情不同。我想也许 ToHtml 实例并不是我真正想要的。我只想折叠所有后代,将它们的标签和内容转换为文本。虽然我找不到办法。
formatParas :: [ 文本 ] -> [ 文本 ]
haskell - html-conduit (HTML -> Haskell 中的 XHTML)
我是 Haskell 的初学者。我有一些使用 xml-conduit 的代码,并且一切正常,我可以根据需要对其进行转换。
我遇到的问题是我的输入来自 html(来自网络)。我想把它输入到我的函数中。目前为此,我必须运行命令行实用程序 'tidy' 以将其规范化为 XHTML:
这是可行的,但显然并不理想。我不想围绕 'tidy' 编写命令行包装器,我相信这一定已经解决了!我找到了 html-conduit 包,但不知道如何将一个连接到另一个。如果有人能阐明如何解决这个问题,或者另一个图书馆可以做我想做的事,我将不胜感激。我尝试阅读 html-conduit 的文档,但无法弄清楚这两个库如何互操作。