【问题标题】:How to Remove all output from JTidy?如何从 JTidy 中删除所有输出?
【发布时间】:2013-01-18 14:29:07
【问题描述】:

我正在使用 JTidy 清理一些 XML,如下所示:

Tidy tidy = new Tidy();
tidy.setXmlOut(true);
tidy.setShowWarnings(false);
tidy.parse(new FileInputStream(strStrippedHTMLPath), new FileOutputStream(strXMLPath));

问题是它总是输出以下内容:

InputStream: Document content looks like HTML 4.01
5 warnings, no errors were found!

我怎样才能防止它输出任何东西?我试过了:

tidy.setShowErrors(0);
tidy.setQuiet(true);
tidy.setErrout(null);

,如here 所示,但这也不起作用。

【问题讨论】:

    标签: java xml jtidy


    【解决方案1】:

    嗯,总会有的:

    PrintStream oldErr = System.err();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PrintStream newErr = new PrintStream(boas);
    System.setErr(newErr);
    tidy.parse(...);
    System.setErr(oldErr);
    

    最好使用某种 Null 输出流(显然 Apache Commons 有这样的野兽)。但大意是一样的。

    当然,这有点小题大做……

    【讨论】:

    • 只是一个快速警告:这不是线程安全的,并且会重定向 VM 中运行的所有内容的错误输出,因此请确保您知道自己在做什么!
    【解决方案2】:

    而不是tidy.setErrout(null); 使用tidy.setErrout(new PrintWriter(new ByteArrayOutputStream())); 这似乎对我有用。

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 1970-01-01
      • 2011-09-07
      • 2021-06-04
      • 1970-01-01
      • 2011-05-18
      • 2013-03-15
      • 2020-06-04
      • 2013-01-11
      相关资源
      最近更新 更多