使用HXT中的列表

时间:2012-04-15 05:16:11

标签: haskell hxt

我在尝试使用定义here的简单>>.>.函数时会发疯。

我想获得HXT中节点的全部文本的长度。我正在使用这个:

runX (doc //> hasName "div" //> text >>. unlines)

doc是我的XmlTree箭头。

这将获取所有div的所有文本(包括他们拥有的任何孩子的文本)。它将文本作为字符串获取,因为我正在使用unlines。现在我想获得该字符串的长度,所以我尝试:

runX (doc //> hasName "div" //> text >>. unlines >. length)

HXT似乎神奇地将我的字符串转换回数组,因为我得到了这个:

[0,17,0,20,0,11,...]

我想要的是Int总结的所有内容。我该怎么做?

更新

文本函数的定义如下:

text = deep (getChildren >>> getText)

我发现如果我跳过getChildren位,这可以正常工作:

text = deep getText

只要我只有一个div元素。如果我有多个div元素,我会返回一个数组,其中包含每个元素的长度。

1 个答案:

答案 0 :(得分:2)

考虑接下来的两个例子:

Prelude Text.XML.HXT.Core> flip runLA undefined $ (constL [1, 2] >>>  arr id) >>. take 1
[1]
Prelude Text.XML.HXT.Core> flip runLA undefined $  constL [1, 2] >>> (arr id  >>. take 1)
[1,2]

差异仅在括号中。 没有括号,它将作为第二个例子。所以你的问题有不同的固定性。