JDOM 1.1: дефис не является допустимым символом комментария
Я использую tagoup для очистки некоторого HTML-кода, который я извлекаю из Интернета, и получаю следующую ошибку при разборе страниц с комментариями:
The data "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " is not legal for a JDOM comment: Comment data cannot start with a hyphen.
Я использую JDOM 1.1, и вот код, который выполняет фактическую очистку:
SAXBuilder builder = new org.jdom.input.SAXBuilder("org.ccil.cowan.tagsoup.Parser"); // build
// Don't check the doctype! At our usage rate, we'll get 503 responses
// from the w3.
builder.setEntityResolver(dummyEntityResolver);
Reader in = new StringReader(str);
org.jdom.Document doc = builder.build(in);
String cleanXmlDoc = new org.jdom.output.XMLOutputter().outputString(doc);
Любая идея, что идет не так, или как это исправить? Мне нужно иметь возможность анализировать страницы с длинными строками комментариев <!--------- data ------------>
1 ответ
Комментарий XML/HTML/SGML начинается с --
заканчивается --
и не содержит --
, Объявление комментария содержит ноль или более комментариев.
Ваш пример строки может быть переформатирован как:
<!----
----
- data
----
----
---->
Как вы видете, - data
не является допустимым комментарием и, следовательно, документ не является допустимым HTML. В вашем конкретном случае вы можете исправить это, заменив регулярное выражение /<?!--.*?-->/
с пустой строкой, но помните, что это изменение может также нарушить некоторые действительные документы.