JDOM 1.1:连字符不是有效的注释字符

时间:2010-04-11 17:14:24

标签: java web-crawler jdom tag-soup

我正在使用tagsoup来清理我正在从互联网上抓取的一些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 个答案:

答案 0 :(得分:1)

XML/HTML/SGML comment--开头,以--结尾,不包含--。评论声明包含零个或多个评论。

您的示例字符串可以重新格式化为:

<!----
  ----
  - data
  ----
  ----
  ---->

如您所见,- data不是有效评论,因此该文档无效HTML。在您的特定情况下,您可以通过使用空字符串替换正则表达式/<?!--.*?-->/来修复它,但请注意,此更改也可能会破坏某些有效文档。