用户输入了一些HTML,显示在Yesod模板中。我想转换这个HTML,在呈现之前从它中去掉style属性,但是我不知道如何实现。
如果我的模板包含#{ html },我可以将html作为一个值传递给一个函数,只需编写#{ transform html },如果transform函数有一个签名:transform :: Html -> Html,其中Html是由blaze-html 这里定义的类型。我看到的问题是,Blaze似乎没有公开有用的功能,以便遍历HTML,甚至只是获取给定Html的后代。那么你会建议什么策略呢?我应该试着进入火焰的内部吗?
我不知道这是否纯粹是与烈火有关的问题。转换Html元素不是Blaze的主要用例之一,因此这个问题需要在用Yesod进行渲染的背景下加以解决。
发布于 2015-09-30 18:03:41
您必须先渲染到文本或ByteString,否则就无法分析内容。然后,您可以使用一个库来处理数据,比如html-导管或标签汤(这就是xss-消毒所做的)。
https://stackoverflow.com/questions/32871016
复制相似问题