我需要在我的应用中创建两个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();
}
}
我不知道这是否有意义。它不起作用,没有任何内容写入输出。请帮我解决一下这个。提前谢谢。
答案 0 :(得分:1)
根据HtmlTestFixture.diff
的编码方式(在src/test/java
的{{1}}内),您需要向其说明如何格式化结果。您是否尝试添加以下{{ 1}}来电?
DaisyDiff
这样做,我的输出如下。现在我可以将它粘贴到一个HTML文件中,包括正确的css和js文件,并有一个漂亮的输出。
setOutputProperty(...)