I implement below method, originally it works, but now I always get java.lang.IllegalStateException in the line cleaner.cleanAndParse(oldSource, oldHandler);
the version of daisydiff is 1.2
Anybody can help me? thanks a lot
private static String diff(InputStream html1, InputStream html2) {
SAXTransformerFactory tf = (SAXTransformerFactory) TransformerFactory.newInstance();
TransformerHandler result = tf.newTransformerHandler();
StringWriter resultWriter = new StringWriter();
result.setResult(new StreamResult(resultWriter));
Locale locale = Locale.getDefault();
String prefix = "diff";
HtmlCleaner cleaner = new HtmlCleaner();
InputSource oldSource = new InputSource(htmlOld);
InputSource newSource = new InputSource(htmlNew);
DomTreeBuilder oldHandler = new DomTreeBuilder();
cleaner.cleanAndParse(oldSource, oldHandler);
TextNodeComparator leftComparator = new TextNodeComparator(oldHandler, locale);
DomTreeBuilder newHandler = new DomTreeBuilder();
cleaner.cleanAndParse(newSource, newHandler);
TextNodeComparator rightComparator = new TextNodeComparator(newHandler, locale);
result.startDocument();
HtmlSaxDiffOutput output = new HtmlSaxDiffOutput(result, prefix);
HTMLDiffer differ = new HTMLDiffer(output);
differ.diff(leftComparator, rightComparator);
result.endDocument();
return resultWriter.toString();
}
Caused by: org.xml.sax.SAXException: XML-22900: (Fatal Error) An internal error condition occurred.
javax.xml.transform.TransformerException: XML-22900: (Fatal Error) An internal error condition occurred.
at oracle.xml.jaxp.JXTransformerHandler.endDocument(JXTransformerHandler.java:156)
at org.outerj.daisy.diff.helper.MergeCharacterEventsHandler.endDocument(Unknown Source)
at org.outerj.daisy.diff.helper.NekoHtmlParser$RemoveNamespacesHandler.endDocument(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(Unknown Source)
at org.cyberneko.html.filters.DefaultFilter.endDocument(DefaultFilter.java:217)
at org.cyberneko.html.HTMLTagBalancer.endDocument(HTMLTagBalancer.java:446)
at org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2060)
at org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:910)
at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:499)
at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:452)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.outerj.daisy.diff.helper.NekoHtmlParser.parse(Unknown Source)
at org.outerj.daisy.diff.HtmlCleaner.cleanAndParse(Unknown Source)
at com.agile.pc.cmserver.base.BaseTableDAO.diff(BaseTableDAO.java:3265)
... 49 more
Caused by: javax.xml.transform.TransformerException: XML-22900: (Fatal Error) An internal error condition occurred.
at oracle.xml.jaxp.JXTransformer.reportException(JXTransformer.java:915)
at oracle.xml.jaxp.JXTransformer.transform(JXTransformer.java:502)
at oracle.xml.jaxp.JXTransformerHandler.endDocument(JXTransformerHandler.java:152)
... 63 more
Caused by: java.lang.IllegalStateException
at org.outerj.daisy.diff.html.dom.DomTreeBuilder.startElement(Unknown Source)
at oracle.xml.xslt.XSLEventHandler.reportStartElement(XSLEventHandler.java:271)
at oracle.xml.xslt.XSLEventHandler.startElement(XSLEventHandler.java:389)
at oracle.xml.xslt.XSLResultElement.processAction(XSLResultElement.java:156)
at oracle.xml.xslt.XSLNode.processChildren(XSLNode.java:497)
at oracle.xml.xslt.XSLTemplate.processAction(XSLTemplate.java:205)
at oracle.xml.xslt.XSLStylesheet.execute(XSLStylesheet.java:585)
at oracle.xml.xslt.XSLStylesheet.execute(XSLStylesheet.java:551)
at oracle.xml.xslt.XSLProcessor.processXSL(XSLProcessor.java:345)
at oracle.xml.jaxp.JXTransformer.transform(JXTransformer.java:485)
... 64 more