2017-05-31 110 views
1

使用Text.XML.Cursor,是否有一种方便的方式选择与几个条件(如or函数)匹配的节点?选择匹配几个条件之一的节点(OR)

在下面的示例中,如何获取所有<p class="myclass"><h1>节点(按正确顺序)的游标?

<div> 
    <p></p> 
    <div></div> 
    <h1></h1> 
    <hr> 
    <p class="myclass"></p> 
    <h1></h1> 
</div> 

extract :: Cursor -> [Cursor] 
-- Returns 3 cursors [h1, p, h1] 

回答

0

checkElement它接受一个谓词。

checkElement :: Boolean b => (Element -> b) -> Axis 

所以,知道你extractAxis

extract :: Axis 
extract = checkElement yourPredicate 
    where 
    yourPredicate (Element name _ _) = any (== name) ["p", "h1"]` 

添加类检查应该很容易即可;匹配Element构造函数中的第2个元素,查找class属性,然后检查其值为myclass的存在。


type Axis = Cursor -> [Cursor]

相关问题