如何调用DaisyDiff来比较两个HTML文件?

时间:2015-05-28 13:29:25

标签: java html sax

我需要在我的应用中创建两个HTML文档之间的差异。我找到了一个名为DaisyDiff的库,可以做到这一点。它有一个如下所示的API:

/**
 * Diffs two html files, outputting the result to the specified consumer.
 */
public static void diffHTML(InputSource oldSource, InputSource newSource,
                            ContentHandler consumer, String prefix, Locale locale)
        throws SAXException, IOException

我对SAX一无所知,我无法弄清楚要传递什么作为第三个参数。经过https://code.google.com/p/daisydiff/source/browse/trunk/daisydiff/src/java/org/outerj/daisy/diff/Main.java之后,我写了这个方法:

@Override
    protected String doInBackground(String... params)
    {
        try {
            String oldFileName = params[0],
                    newFileName = params[1];
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            FileInputStream oldis = null, newis = null;
            oldis = openFileInput(oldFileName);
            newis = openFileInput(newFileName);

            SAXTransformerFactory tf = (SAXTransformerFactory) TransformerFactory
                    .newInstance();

            TransformerHandler result = tf.newTransformerHandler();
            result.setResult(new StreamResult(os));
            DaisyDiff.diffHTML(new InputSource(oldis), new InputSource(newis), result, "", Locale.getDefault());

            Log.d("diff", "output length = " + os.size());
            return os.toString("Utf-8");

        }catch (Exception e){
            return e.toString();
        }
    }

我不知道这是否有意义。它不起作用,没有任何内容写入输出。请帮我解决一下这个。提前谢谢。

1 个答案:

答案 0 :(得分:1)

根据HtmlTestFixture.diff的编码方式(在src/test/java的{​​{1}}内),您需要向其说明如何格式化结果。您是否尝试添加以下{{ 1}}来电?

DaisyDiff

这样做,我的输出如下。现在我可以将它粘贴到一个HTML文件中,包括正确的css和js文件,并有一个漂亮的输出。

setOutputProperty(...)

相关问题