我的问题是我必须从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)或所有标签“tables”中检索所有行,它提供了类型[XmlTree],但我不知道如何在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)
答案 0 :(得分: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"]]]