Haskell の XML/HTML 処理ライブラリである HXT には、矢印で DOM ツリーをトラバースおよび操作するための非常に柔軟で強力なメソッドがあると思います。 http://adit.io/posts/2012-04-14-working_with_HTML_in_haskell.html
ただし、HXT には DOM ノード コンテンツの文字列表現しかないようです。 http://hackage.haskell.org/packages/archive/hxt/9.1.6/doc/html/Text-XML-HXT-DOM-TypeDefs.html#t:XNode
HXT に ByteString または Text のいずれかを使用することは可能ですか? 主にテキストを使用しているように見えるYesodでHXTを使用しているため、テキストが優先されます。