问题标签 [hxt]

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 投票
3 回答
1222 浏览

xml - Haskell HXT 用于提取值列表

我正在尝试同时使用 XPath 和箭头来解决 HXT 问题,但我完全不知道如何解决这个问题。我有以下 HTML:

我已将其提取到 HXT XmlTree 中。我想做的是定义一个函数(我认为?):

哪个,如果用作getValues ["c1", "c2", "c3", "c4"],会让我:

请帮忙?

0 投票
1 回答
687 浏览

xml - HXT——什么是“深”?

我花了很多时间试图弄清楚如何使用 HXT。我不断反对使用deep. 做什么deep

例如,此代码具有以下内容:

另一个例子:

0 投票
2 回答
1741 浏览

haskell - 在 IO 之外运行 Haskell HXT?

到目前为止,我看到的所有使用 Haskell XML 工具包 HXT 的示例都runX用于执行解析器。runX在 IO monad 内部运行。有没有办法在 IO 之外使用这个 XML 解析器?对我来说似乎是一个纯粹的操作,不明白为什么我被迫在 IO 里面。

0 投票
1 回答
322 浏览

xml - 折叠箭头以列出

我在使用HXT时遇到了一些问题,尽管我怀疑这只是我对箭头的遗漏。

我有一个类似的 XML 结构

和内部结构一样

有没有办法在箭头的一步收集元素?

对 getXmlData 的递归调用需要收集它的答案并包装在 XmlList 构造函数中,但我不知道如何收集术语。目前,我正在对输出进行一些后处理(以相同的名称收集)来完成此操作,但我想要一个更好的解决方案。

0 投票
1 回答
411 浏览

haskell - HXT:左因子非确定性箭头?

我正在尝试与 Haskell 的 XML 工具箱 ( HXT ) 达成协议,但我在某处碰壁,因为我似乎没有完全掌握箭头作为一种计算工具。

这是我的问题,我希望使用 GHCi 会话更好地说明:

所以 Parse 是一个小的辅助函数,它将我给它的任何箭头应用到琐碎的 XML 文档

我定义了另一个辅助函数,这次是提取具有给定名称的节点下面的文本:

在这个函数的帮助下,很容易使用&&&组合器来配对两个不同节点的文本,然后,比如说,将它传递给构造函数,如下所示:

现在到了我不明白的部分:我想左因子!extract两次调用getChildren根节点。相反,我希望它只调用一次!所以我首先得到根节点的孩子

请注意,我已尝试重新排序对 isElem 等的调用,以确定是否是问题所在。但就目前而言,我只是不知道为什么这不起作用。Haskell wiki上有一个箭头“教程” ,按照我的理解,它应该可以做我想做的事情——即使&&&用来配对两个计算的结果。

它也确实有效——但只是在箭头链的开始,而不是在低谷的中间,当我已经有了一些结果时,我想保持“共享”。我有一种感觉,就是无法理解正常函数组合和箭头符号之间的想法差异。我会非常感谢任何指针!(即使它只是一些比 Haskell-wiki 更深入的通用箭头教程。)

谢谢!

0 投票
1 回答
344 浏览

haskell - 向 HXT 解析添加状态

我正在尝试编写一个箭头,该箭头将使用 HXT 从 XML 解析中生成编号元素。似乎应该使用状态箭头来完成,例如 State monad,但是我可以在 HXT 包中找到的所有示例以及访问状态(XmlState)的方法都使用 IOStateArrow 我宁愿保持它纯粹使用 StateArrow 简化测试过程。是否存在这样的变体?如果不是,我将如何将状态添加到 HXT 解析而不必求助于在 IO 中运行箭头?

0 投票
1 回答
450 浏览

haskell - HXT 的计数和过滤箭头

我正在尝试解析 XML,但我想过滤并仅从给定节点中提取确定数量的子节点。例如:

然后,如果我执行箭头getChildren >>> myFilter 2,我将只取回 ID 为“a”和“b”的节点。

直觉告诉我应该使用状态箭头来跟踪,但我不知道该怎么做。

我试着自己做,但这不是我想要的,看起来不是很优雅,也不起作用。我尝试使用runSLA整数参数作为初始状态运行我的箭头链,然后定义:

但是我当然不能返回Nothing,我需要返回一个 XmlTree。但我根本不想退货!

那里可能有更好的方法。你能帮助我吗?

感谢您的时间和帮助!

0 投票
1 回答
305 浏览

performance - 调试 HXT 性能问题

我正在尝试使用 HXT 读取一些大型 XML 数据文件(数百 MB。)

我的代码在某处有空间泄漏,但我似乎找不到它。由于我对 ghc 分析工具链的了解非常有限,我确实对正在发生的事情有所了解。

基本上,文档被解析,但不被评估。

这是一些代码:

我正在尝试读取一个语料库文件,其结构显然类似于<corpus><sentence><word form="Hello"/><word form="world"/></sentence></corpus>.

即使在非常小的开发语料库上,程序也需要大约 15 秒才能读入,其中大约 20% 是 GC 时间(这太多了。)

特别是,大量数据在 DRAG 状态下花费了太多时间。这是个人资料:

http://imgur.com/YC3jh

监视 DRAG 罪魁祸首。你可以看到 decodeDocument 被调用了很多次,然后它的数据被停止直到执行结束。

现在,我认为这应该可以通过将所有这些 decodeDocument 内容折叠到我的数据结构(SentenceWord)中来轻松解决,然后 RT 可以忘记这些 thunk。它目前发生的方式是,折叠发生在最后,当我通过在monad 中解构来强制评估时,它 容易在online中发生。我看不出有什么理由,而且我试图严格这个程序的尝试到目前为止都是徒劳的。我希望有人可以帮助我:-)EitherIO

我什至想不出太多的地方可以放seqs 和$!s...</p>

0 投票
1 回答
175 浏览

haskell - 从 HXT 中失败的 Relax NG 验证中读取状态

在 Haskell 中验证 XML 文件可以很好地使用HXTRelax NG,除了一件事:我怎样才能得到结果?

使用以下代码,XML 文件xmlFilename将根据 Relax NG 方案进行验证rngFilename。如果发生错误,则将错误输出到stderr,并继续评估。

如果出现错误,变量v会根据hxt-relaxng 文档保存以下信息:

在验证错误的情况下,根中包含状态信息的空文档 [输出]

生成的带有错误文档的树确实包含一个status(and module) 属性:

现在的问题:

如何检查validateDocumentWithRelaxSchema是否存在验证错误的输出?

有没有我可以使用的预定义函数(但还没有找到)?

0 投票
2 回答
642 浏览

haskell - 用于图形库的 xml-tree 解析器 (Haskell)

我正在编写一个用于处理图形的库。主要任务 - 解析 xml-tree。树看起来像

存储结构:

如何将 xml 文件中的数据写入此结构?我不能为这种类型的 xml 树(HXT 库)编写解析器