2

我的问题是我必须从 html 文档中提取所有表格并将它们放入表格列表中。

因此我明白结束函数类型应该是

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

例如使用以下 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>

我知道如何从一个xmlTree(example1)或所有为我提供类型[XmlTree]的标签“tables”中检索所有行,但我不知道如何在test2的结果中映射箭头example1。

我确定它很明显,但我找不到它。

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)
4

1 回答 1

3

使用与您相同的一般想法example1,我们可以getTable这样写

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

在示例文档上运行箭头会产生

[[["x","y"],["a","b"]],[["3","5"],["toto","titi"]]]
于 2012-06-06T11:19:56.423 回答