1

私はtagsoupを使用して、インターネットからスクレイピングしているHTMLをクリーンアップしていますが、コメント付きのページを解析すると、次のエラーが発生します。

The data "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " is not legal for a JDOM comment: Comment data cannot start with a hyphen.

私はJDOM1.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 ------------>

4

1 に答える 1

1

XML / HTML / SGMLコメントは、で始まり、--で終わり、 。--を含みません--。コメント宣言には、0個以上のコメントが含まれています。

サンプルの文字列は、次のように再フォーマットできます。

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

ご覧のとおり、- dataは有効なコメントではないため、ドキュメントは有効なHTMLではありません。特定のケースでは、正規表現を空の文字列に置き換えることで修正できますが/<?!--.*?-->/、この変更によって一部の有効なドキュメントが破損する可能性があることに注意してください。

于 2010-04-11T17:23:15.073 に答える