问题标签 [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.
xml - Haskell HXT 用于提取值列表
我正在尝试同时使用 XPath 和箭头来解决 HXT 问题,但我完全不知道如何解决这个问题。我有以下 HTML:
我已将其提取到 HXT XmlTree 中。我想做的是定义一个函数(我认为?):
哪个,如果用作getValues ["c1", "c2", "c3", "c4"]
,会让我:
请帮忙?
haskell - 在 IO 之外运行 Haskell HXT?
到目前为止,我看到的所有使用 Haskell XML 工具包 HXT 的示例都runX
用于执行解析器。runX
在 IO monad 内部运行。有没有办法在 IO 之外使用这个 XML 解析器?对我来说似乎是一个纯粹的操作,不明白为什么我被迫在 IO 里面。
xml - 折叠箭头以列出
我在使用HXT时遇到了一些问题,尽管我怀疑这只是我对箭头的遗漏。
我有一个类似的 XML 结构
和内部结构一样
有没有办法在箭头的一步收集元素?
对 getXmlData 的递归调用需要收集它的答案并包装在 XmlList 构造函数中,但我不知道如何收集术语。目前,我正在对输出进行一些后处理(以相同的名称收集)来完成此操作,但我想要一个更好的解决方案。
haskell - HXT:左因子非确定性箭头?
我正在尝试与 Haskell 的 XML 工具箱 ( HXT ) 达成协议,但我在某处碰壁,因为我似乎没有完全掌握箭头作为一种计算工具。
这是我的问题,我希望使用 GHCi 会话更好地说明:
所以 Parse 是一个小的辅助函数,它将我给它的任何箭头应用到琐碎的 XML 文档
我定义了另一个辅助函数,这次是提取具有给定名称的节点下面的文本:
在这个函数的帮助下,很容易使用&&&
组合器来配对两个不同节点的文本,然后,比如说,将它传递给构造函数,如下所示:
现在到了我不明白的部分:我想左因子!extract
两次调用getChildren
根节点。相反,我希望它只调用一次!所以我首先得到根节点的孩子
请注意,我已尝试重新排序对 isElem 等的调用,以确定是否是问题所在。但就目前而言,我只是不知道为什么这不起作用。Haskell wiki上有一个箭头“教程” ,按照我的理解,它应该可以做我想做的事情——即使&&&
用来配对两个计算的结果。
它也确实有效——但只是在箭头链的开始,而不是在低谷的中间,当我已经有了一些结果时,我想保持“共享”。我有一种感觉,就是无法理解正常函数组合和箭头符号之间的想法差异。我会非常感谢任何指针!(即使它只是一些比 Haskell-wiki 更深入的通用箭头教程。)
谢谢!
haskell - 向 HXT 解析添加状态
我正在尝试编写一个箭头,该箭头将使用 HXT 从 XML 解析中生成编号元素。似乎应该使用状态箭头来完成,例如 State monad,但是我可以在 HXT 包中找到的所有示例以及访问状态(XmlState)的方法都使用 IOStateArrow 我宁愿保持它纯粹使用 StateArrow 简化测试过程。是否存在这样的变体?如果不是,我将如何将状态添加到 HXT 解析而不必求助于在 IO 中运行箭头?
haskell - HXT 的计数和过滤箭头
我正在尝试解析 XML,但我想过滤并仅从给定节点中提取确定数量的子节点。例如:
然后,如果我执行箭头getChildren >>> myFilter 2
,我将只取回 ID 为“a”和“b”的节点。
直觉告诉我应该使用状态箭头来跟踪,但我不知道该怎么做。
我试着自己做,但这不是我想要的,看起来不是很优雅,也不起作用。我尝试使用runSLA
整数参数作为初始状态运行我的箭头链,然后定义:
但是我当然不能返回Nothing
,我需要返回一个 XmlTree。但我根本不想退货!
那里可能有更好的方法。你能帮助我吗?
感谢您的时间和帮助!
performance - 调试 HXT 性能问题
我正在尝试使用 HXT 读取一些大型 XML 数据文件(数百 MB。)
我的代码在某处有空间泄漏,但我似乎找不到它。由于我对 ghc 分析工具链的了解非常有限,我确实对正在发生的事情有所了解。
基本上,文档被解析,但不被评估。
这是一些代码:
我正在尝试读取一个语料库文件,其结构显然类似于<corpus><sentence><word form="Hello"/><word form="world"/></sentence></corpus>
.
即使在非常小的开发语料库上,程序也需要大约 15 秒才能读入,其中大约 20% 是 GC 时间(这太多了。)
特别是,大量数据在 DRAG 状态下花费了太多时间。这是个人资料:
监视 DRAG 罪魁祸首。你可以看到 decodeDocument 被调用了很多次,然后它的数据被停止直到执行结束。
现在,我认为这应该可以通过将所有这些 decodeDocument 内容折叠到我的数据结构(Sentence
和Word
)中来轻松解决,然后 RT 可以忘记这些 thunk。它目前发生的方式是,折叠发生在最后,当我通过在monad 中解构来强制评估时,它很 容易在online中发生。我看不出有什么理由,而且我试图严格这个程序的尝试到目前为止都是徒劳的。我希望有人可以帮助我:-)Either
IO
我什至想不出太多的地方可以放seq
s 和$!
s...</p>
haskell - 从 HXT 中失败的 Relax NG 验证中读取状态
在 Haskell 中验证 XML 文件可以很好地使用HXT和Relax NG,除了一件事:我怎样才能得到结果?
使用以下代码,XML 文件xmlFilename
将根据 Relax NG 方案进行验证rngFilename
。如果发生错误,则将错误输出到stderr
,并继续评估。
如果出现错误,变量v
会根据hxt-relaxng 文档保存以下信息:
在验证错误的情况下,根中包含状态信息的空文档 [输出]
生成的带有错误文档的树确实包含一个status
(and module
) 属性:
现在的问题:
如何检查validateDocumentWithRelaxSchema
是否存在验证错误的输出?
有没有我可以使用的预定义函数(但还没有找到)?
haskell - 用于图形库的 xml-tree 解析器 (Haskell)
我正在编写一个用于处理图形的库。主要任务 - 解析 xml-tree。树看起来像
存储结构:
如何将 xml 文件中的数据写入此结构?我不能为这种类型的 xml 树(HXT 库)编写解析器