如何在使用Yesod渲染之前转换一些Blaze`Html`?

时间:2015-09-30 16:16:07

标签: haskell yesod blaze-html

我有一些用户输入的HTML,显示在Yesod模板中。我想转换这个HTML,在渲染之前从中删除style属性,但我无法找到它。

如果我的模板包含#{ html },我可以通过函数传递html,只需编写#{ transform html },如果transform函数有签名:{{1} } transform :: Html -> Html是由Html here定义的类型。我看到的问题是,Blaze似乎没有公开功能,以便遍历HTML树,甚至只是获得给定blaze-html的后代。那么你会建议哪种策略?我应该尝试进入Blaze内部吗?

我不确定这是否应该被视为Blaze的一个问题。转换Html元素不是Blaze的主要用例之一,因此需要在使用Yesod渲染的上下文中解决此问题

1 个答案:

答案 0 :(得分:1)

你必须首先渲染到Text或ByteString,blaze没有提供分析内容的方法。然后,您可以使用像html-conduit或tagsoup这样的库处理数据(这是xss-sanitize所做的)。