2017-05-31 45 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]

相關問題