问题标签 [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 回答
114 浏览

haskell - xml-conduit - 结合 tagParsers

我一直在尝试用 xml-conduit 解析 XML 数据结构,经过一些学习后似乎可以工作。但我现在坚持的是以下内容。

给定标签解析器列表,我如何使用choose它们来组合它们

虽然上述工作正常 - 如果我将常见模式重构为

我收到以下错误

在我看来,这forall o部分变得专业化了——因此它forall不再是一个,但这只是一个猜测。

从文档中xml-conduit

并且知道 Consumer 只是一个类型的同义词

编辑:

我尝试使用flambda 函数 - 这也不起作用。

编辑2:

ConduitErr.hs

foo.cabal

0 投票
1 回答
182 浏览

xml - 流解析xml而不知道子标签的顺序

我必须解析一些 xml,我决定使用 xml-conduit 来完成该任务并使用它的流式传输部分。

xml 的结构由包含元素及其出现频率的 xsd 文件给出。但不是他们预期的顺序。

如何使用 xml 结构的子级解析所有可能的重新排序Text.XML.Stream.Parse

问题

假设我们有一个 xml 描述,例如

那么两者<Root><A>atext</A><B>btext</B></Root><Root><B>btext</B><A>atext</A></Root>都是此 xml 结构的有效实例。但是在流设置中解析需要一个顺序才能成功。

我想过使用类似的东西,parseRoot1 <|> parseRoot2但后来我必须实现Alternative实例并手动编写所有可能性,我真的不想这样做。

这是一个最小的示例 haskell 程序。

Example.hs

笔记

example.cabal

0 投票
1 回答
184 浏览

xml - xml-conduit 解析 xml 属性

解析 XMLxml-conduit偶然发现了以下问题:当我有多个属性时,具有相同的基本名称但不同的前缀只有(词法)顺序中的第一个。

如果属性的前缀和非前缀版本都存在,我如何获取前缀值?

最小的非工作示例:

Main.hs

attr.cabal

0 投票
1 回答
1711 浏览

html - How to ignore unclosed tags in XML or HTML?

I'm writing a parser in Haskell for the site using the packages Text.XML and Text.XML.Cursor.

There are unclosed tags and get an error:

Main.hs: Error parsing XML file dat.html: 29:1-29:8: Expected end element for: Name {nameLocalName = "br", nameNamespace = Nothing, namePrefix = Nothing}, but received: EventEndElement (Name {nameLocalName = "body", nameNamespace = Nothing, namePrefix = Nothing})

What to do? How to ignore such tags?

0 投票
1 回答
135 浏览

haskell - 不确定如何使用 Text.XML.Cursor 解析它

我正在尝试解析如下所示的 XML:

我想这样解析该信息:

我不知道该怎么做。我的第一个想法是做类似的事情element "h1" $| followingSibling &// element "tr" &/ content,但这不起作用,因为它会捕获所有的 tr,即使是那些不“属于”我试图从中读取的表的,我不会无法知道哪些属性属于哪个集合。

我该如何解决这个问题?

0 投票
1 回答
166 浏览

xml - 在 XML 中使用命名空间等解析元素

这个问题是关于如何使用xmlns属性等解析 xml 内容。我编写了代码来解析它的工作原理。我会很感激关于它是否可以做得更好的指针。

我有一个test.xml如下的 XML 文件:

我使用以下代码编写了解析“SomeResult”内容的代码xml-conduit

中的输出ghci:正确解析:

laxElement定位内容的方法是SomeResult好方法吗?如果有更好的方法,我将非常感谢这方面的指点。

此外,我需要反向进行 http 编码(在构建上述响应的请求时),其中内部主体被转义(如SomeResultin下text.xml)。这是在使用构建请求时默认处理的事情Text.XML,还是我必须使用html-entities 之类的东西将内部主体显式转换为转义的 http ?

0 投票
2 回答
227 浏览

xml - haskell:xml过滤子树

我正在努力使用 haskell 删除一个 Element 及其所有子项。任务是从给定的 xml 文档中删除所有表格标签(也许我还没有理解游标的概念,或者它是我缺少的其他东西)。

我尝试了三种不同的方法:

  • 具有遍历/过滤功能并使用新元素设置过滤值的镜头 -此处仅替换标签而不替换内容
  • 使用光标访问表格元素 - 重置那里的内容并通过将光标向上遍历到文档根再次获取文档根 -没有过滤任何内容
  • 递归过滤文档根的子节点 -没有过滤任何内容

工具

  • xml-conduit
  • xml-lens
  • ghc-8.0.1

输入 ( test.xml)/输出

最小非工作示例

输出

0 投票
1 回答
182 浏览

haskell - 如何跳过 xml-conduit 中的元素

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

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

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

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

我最初想写这样的东西:

但它不会编译,因为ignoreType返回Maybe ()

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

0 投票
1 回答
60 浏览

haskell - 选择与多个条件之一匹配的节点 (OR)

使用Text.XML.Cursor,是否有一种方便的方法来选择与多个条件之一匹配的节点(如or函数)?

在以下示例中,如何获取所有<p class="myclass"> 和节点的游标(以正确的顺序)? <h1>

0 投票
1 回答
107 浏览

xml - 使用 xml-conduit 如何解析 mediawiki 转储文件

我正在尝试使用 xml-conduit 解析 mediawiki 转储文件。我感兴趣的有两个标签,SiteInfo 和 Page。这是一个示例 xml:https ://gist.github.com/shadow-fox/7ff8df7a953e0ca9534bef45700686fe

我有一些零碎的东西,但不知道如何将它们联系在一起并获得想要的结果。我不知道如何获取命名空间标签中的标签示例中是否有超过 1 个属性:<namespace key="-2" case="case-sensitive">Media</namespace>

我希望最后的结果同时包含 siteinfo 和 wikidoc。