3

ここで>>.定義されているシンプルな>.関数を使おうと夢中になっています。

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要素が1つしかない限り。複数のdiv要素がある場合は、各要素の長さの配列が返されます。

4

1 に答える 1

2

次の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]

違いは角かっこだけです。角かっこがない場合は、2番目の例として機能します。したがって、さまざまな修正の問題があります。

于 2012-04-16T07:12:08.027 に答える