在XHTML中嵌入HTML

时间:2011-03-14 23:00:44

标签: java html jsf xhtml

我有一个JSF页面,它输出XHTML(来自facelet)。其中一个字段具有用户生成的HTML,导致我的Web浏览器(Safari)中出现解析错误。

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

我想到的一件事就是取代所有的例子< br>与< br />,但必须有一个更好的解决方案。

这是我需要嵌入的另一个例子:

这是我的示例文字。< br>地址是Wind&火。

请注意,换行标记需要自封闭,并且“&”应该是& aamp;

1 个答案:

答案 0 :(得分: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代码。