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. В вашем конкретном случае вы можете исправить это, заменив регулярное выражение /<?!--.*?-->/ с пустой строкой, но помните, что это изменение может также нарушить некоторые действительные документы.

Другие вопросы по тегам