我在尝试使用定义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
元素,我会返回一个数组,其中包含每个元素的长度。
答案 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]
差异仅在括号中。 没有括号,它将作为第二个例子。所以你的问题有不同的固定性。