我正在使用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 ------------>
答案 0 :(得分:1)
XML/HTML/SGML comment以--
开头,以--
结尾,不包含--
。评论声明包含零个或多个评论。
您的示例字符串可以重新格式化为:
<!----
----
- data
----
----
---->
如您所见,- data
不是有效评论,因此该文档无效HTML。在您的特定情况下,您可以通过使用空字符串替换正则表达式/<?!--.*?-->/
来修复它,但请注意,此更改也可能会破坏某些有效文档。