选择与多个条件之一匹配的节点(OR)

时间:2017-05-31 16:01:50

标签: haskell xml-conduit

使用Text.XML.Cursor,是否有方便的方法来选择与几个条件之一匹配的节点(如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]

1 个答案:

答案 0 :(得分:0)

checkElement接受谓词。

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

因此,知道您的extractAxis 1

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

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

1 type Axis = Cursor -> [Cursor]