我疯狂地尝试使用定义的简单 >>.
和 >.
函数 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
元素,我会返回一个包含每个元素长度的数组。
最佳答案
考虑接下来的两个例子:
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]
区别仅在括号内。 如果没有括号,它将作为第二个示例。因此,您遇到的问题是由于固定因素不同。
关于haskell - 在 HXT 中使用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159740/