extrage tabele html multipli cu hxt

problema mea este că trebuie să extrag toate tabelele dintr-un document html și să le pun într-o listă de tabele.

Prin urmare, am înțeles că tipul de funcție de terminare ar trebui să fie

getTable :: a [XmlTree] [[String]]

de exemplu cu următoarele xml:

<table class="t1">
<tr>
    <td>x</td>
    <td>y</td>
</tr>
<tr>
    <td>a</td>
    <td>b</td>
</tr>
</table>
<table class="t2">
<tr>
    <td>3</td>
    <td>5</td>
</tr>
<tr>
    <td>toto</td>
    <td>titi</td>
</tr>
</table>

Știu cum să recuperez toate rândurile de la un xmlTree (example1) sau toate tabelele "tables" care îmi oferă tipul [XmlTree], dar nu știu cum să hărțim exemplul arrow1 în rezultatul test2.

Sunt sigur că este evident, dar nu-l găsesc.

test2 ::  IO [[XmlTree]]
test2 = runX $ parseXML "table.xml" >>> is "table">>> listA getChildren

example1 ::  ArrowXml a => a XmlTree [String]
example1  = is "table" /> listA (getChildren >>> is "td"  /> getText)
0

1 răspunsuri

Folosind aceeași idee generală pe care o aveți în example1 , putem scrie getTable ca aceasta

getTable :: ArrowXml a => a XmlTree [[String]]
getTable =  hasName "table" >>> listA (rows >>> listA cols) where
    rows = getChildren >>> hasName "tr"
    cols = getChildren >>> hasName "td" /> getText

Se execută săgeata de pe exemplul dvs. de document

[[["x","y"],["a","b"]],[["3","5"],["toto","titi"]]]
0
adăugat
exact ceea ce mi-am dorit. i adaugă pentru a modifica un pic getTable și schimba hasName cu următoarea funcție este x = adâncime (isElem >>> hasName x) . mulțumesc
adăugat autor jinkou2 jinkou2, sursa