2011-03-14 49 views
2

我有一个输出XHTML的JSF页面(从facelet)。其中一个字段包含用户生成的HTML,导致我的Web浏览器(Safari)出现分析错误。在XHTML中嵌入HTML

据我所知,这是因为XHTML严格遵循XML规则,与HTML不同。嵌入此HTML的最佳方式是什么,同时避免致命的解析错误?

我曾经想过的一件事是将<br>与< br/>的所有实例都替换掉,但是要有比这更好的解决方案。

这里的东西另一个例子,我需要嵌入:

这是我的示例文本。 <br>地址是风&火。这里

请注意,换行符标签必须自我封闭,和符号可能应该是&aamp;

回答

2

使用HTML解析器返回以及形成的HTML语法。我可以为此推荐Jsoup

开球例如:

String userHtml = "foo<br>bar&baz"; 
String wellFormedHtml = Jsoup.parse(userHtml).body().html(); 
System.out.println(wellFormedHtml); // foo<br />bar&amp;baz 

当你要处理用户提交的输入就一次应用此。

Jsoup也提供了更多的优势,例如Whitelist,您可以使用它来去除可能会打开XSS攻击漏洞的潜在恶意HTML/JS代码。

+0

我通过Jsoup运行了一些HTML并解析了这些问题。感谢您分享您的专业知识! – 2011-03-15 00:39:09