2011-03-14 2 views
2

У меня есть страница JSF, которая выводит XHTML (из facelet). В одном из полей есть пользовательский HTML-код, который вызывает ошибки синтаксического анализа в моем веб-браузере (Safari).Внедрение HTML-кода в XHTML

Я понимаю, что это потому, что XHTML является строгим и соответствует правилам XML, в отличие от HTML. Каков наилучший способ встраивания этого HTML-кода, избегая при этом фатальных ошибок синтаксического анализа?

Одна вещь, которую я думал заменяет все экземпляры сказать < уш > с < бр/>, но там должен быть лучшим решением, чем это.

Вот еще один пример того, что мне нужно врезать:

Это мой образец текста. <br> Адрес Ветер & Огонь.

Заметьте здесь, что тег разрыва строки должен быть самостоятельной вшита, и амперсанд, вероятно, следует &aamp;

ответ

2

Используйте HTML-парсер, который возвращает хорошо сформированный синтаксис HTML. Я могу порекомендовать Jsoup.

Kickoff пример:

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

Просто применять этот раз, когда вы собираетесь обрабатывать представленный пользовательский ввод.

Jsoup предлагает больше преимуществ, таких как Whitelist, которые вы можете использовать, чтобы вырезать потенциальный вредоносный код HTML/JS, который может открывать отверстия для атаки XSS.

+0

Я провел несколько HTML через Jsoup, и он разбирал проблемы. Спасибо, что поделились своим опытом! –

Смежные вопросы