我有一些用户输入的HTML,显示在Yesod模板中。我想转换这个HTML,在渲染之前从中删除style
属性,但我无法找到它。
如果我的模板包含#{ html }
,我可以通过函数传递html
,只需编写#{ transform html }
,如果transform
函数有签名:{{1} } transform :: Html -> Html
是由Html
here定义的类型。我看到的问题是,Blaze似乎没有公开功能,以便遍历HTML树,甚至只是获得给定blaze-html
的后代。那么你会建议哪种策略?我应该尝试进入Blaze内部吗?
我不确定这是否应该被视为Blaze的一个问题。转换Html
元素不是Blaze的主要用例之一,因此需要在使用Yesod渲染的上下文中解决此问题
答案 0 :(得分:1)
你必须首先渲染到Text或ByteString,blaze没有提供分析内容的方法。然后,您可以使用像html-conduit或tagsoup这样的库处理数据(这是xss-sanitize所做的)。