我想解析一个XML,但我想过滤和提取一个给定的节点只有确定数量的孩子。例如:计数和过滤箭头为HXT
<root>
<node id="a" />
<node id="b" />
<node id="c" />
<node id="d" />
</root>
然后,如果我执行箭头getChildren >>> myFilter 2
,我还是会回到只有ID节点“A”和“B”。
直觉让我应该使用状态箭头来跟踪,但我不知道该怎么做。
我试图自己做,但它不完全是我想要的,不看起来非常优雅,并且不起作用。我尝试用runSLA
和整数参数作为初始状态运行我的箭链,然后定义:
takeOnly :: IOSLA Int XmlTree XmlTree
takeOnly = changeState (\s b -> s-1)
>>> accessState (\s b -> if s >= 0 then b else Nothing)
但我当然不能返回Nothing
,我需要返回一个XmlTree。但我根本不想回报任何东西!
这里可能有更好的方法。你可以帮我吗?
感谢您的时间和帮助!
哇!这正是我正在寻找的,谢谢!因为很明显我对箭头很新颖......但我爱他们,现在更多^^ – 2011-03-04 00:08:00