Ich werde verrückt versuchen, die einfachen >>.
und >.
Funktionen here definiert zu verwenden.Arbeiten mit Listen in HXT
Ich möchte die Länge von alle den Text für einen Knoten in HXT erhalten. Ich verwende diese:
runX (doc //> hasName "div" //> text >>. unlines)
Wo doc
meine XmlTree
Pfeil ist.
Das bekommt mir den ganzen Text für alle divs (einschließlich Text in allen Kindern, die sie haben). Es erhält den Text als String, weil ich unlines
verwende. Jetzt möchte ich die Länge dieser Zeichenfolge erhalten, so dass ich versuchen:
runX (doc //> hasName "div" //> text >>. unlines >. length)
Und HXT scheint auf magische Weise meinen String zurück in ein Array zu umwandeln, weil ich diese:
[0,17,0,20,0,11,...]
Was ich will, sind all diese Int
s zusammengefasst. Wie würde ich das tun?
aktualisieren:
Die Textfunktion ist wie folgt definiert:
text = deep (getChildren >>> getText)
ich herausgefunden, wenn ich das getChildren
Bit überspringen, das funktioniert richtig:
text = deep getText
Wie Solange ich nur ein div
Element habe. Wenn ich mehrere div
Elemente habe, bekomme ich ein Array mit der Länge für jedes Element zurück.
Ich bin nicht mit HXT überhaupt vertraut, aber würde nur '... >>. Länge. macht die Arbeit aus? Oder vielleicht '... >>. (length. unlines) ', abhängig von der Rangfolge des Operators. –
Nein. '>>.' erwartet eine Liste als Ergebnis, also würde ich Ihren Vorschlag schreiben als: 'runX (doc //> hasName" div "//> Text >>. (\ x -> [Länge. unlines $ x])) '. Ich bekomme "[0,17,0,20,0,11, ...]" als Ergebnis. –
Warum nicht einfach 'sum $ runX ...'? –