【问题标题】:How do I make JTIdy make HTML documents well-formed?如何让 JTIdy 使 HTML 文档格式正确?
【发布时间】:2012-05-10 13:55:10
【问题描述】:

标签: java html xml parsing jtidy


【解决方案1】:

如果你想要 XML 格式,你需要为 Tidy 指定几个标志

private String cleanData(String data) throws UnsupportedEncodingException {
    Tidy tidy = new Tidy();
    tidy.setInputEncoding("UTF-8");
    tidy.setOutputEncoding("UTF-8");
    tidy.setWraplen(Integer.MAX_VALUE);
    tidy.setPrintBodyOnly(true);
    tidy.setXmlOut(true);
    tidy.setSmartIndent(true);
    ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    tidy.parseDOM(inputStream, outputStream);
    return outputStream.toString("UTF-8");
}

或者只是如果想要 XHTML 表单

Tidy tidy = new Tidy();
tidy.setXHTML(true);

【讨论】:

  • 我用“setXmlOut”和“setXHTML”都试过了,但都没有生成由“document = tidy.parseDOM(...)”返回的格式良好的文档。此外,JTidy 正在吐出消息,“在使用 HTML Tidy 生成整理后的版本之前,必须修复此文档的错误。”
【解决方案2】:

使用 tidy.setXmlTags(true);解析 XML 而不是 HTML

【讨论】:

  • 它适用于我的 HTML 解析问题之一。谢谢 :)
【解决方案3】:

即使发现错误,也可以使用Tidy.setForceOutput(true)(风险自负)生成输出。

【讨论】:

    【解决方案4】:

    我解析 HTML 2 次以获得格式良好的 xml

      BufferedReader br = new BufferedReader(new StringReader(str));
      StringWriter sw = new StringWriter();
    
      Tidy t = new Tidy();
      t.setDropEmptyParas(true);
      t.setShowWarnings(false); //to hide errors
      t.setQuiet(true); //to hide warning
      t.setUpperCaseAttrs(false);
      t.setUpperCaseTags(false);
      t.parse(br,sw);
      StringBuffer sb = sw.getBuffer();
      String strClean = sb.toString();
      br.close();
      sw.close();
    
      //do another round of tidyness
      br = new BufferedReader(new StringReader(strClean));
      sw = new StringWriter();
    
      t = new Tidy();
      t.setXmlTags(true);
      t.parse(br,sw);
      sb = sw.getBuffer();
      String strClean2 = sb.toString();
      br.close();
      sw.close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2011-02-20
      相关资源
      最近更新 更多