From 3365a175e1721e0fda7a56ad53e24a7e337c13cf Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Sun, 4 Sep 2011 20:19:48 +0200 Subject: Eliminate use of DocumentBuilder (use DOM LS everywhere) + use validation to catch undefined entities. There seems to be no way to catch the undefined entity error (when it is considered a validation error, e.g., when the document has an external subset) other than by turning on validation. So we register an error handler to throw away useless validation errors. --- org/madore/damlengine/WeblogPopulate.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'org/madore/damlengine/WeblogPopulate.java') diff --git a/org/madore/damlengine/WeblogPopulate.java b/org/madore/damlengine/WeblogPopulate.java index 56e51ac..16c7ea0 100644 --- a/org/madore/damlengine/WeblogPopulate.java +++ b/org/madore/damlengine/WeblogPopulate.java @@ -6,12 +6,12 @@ import java.security.MessageDigest; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; -import javax.xml.parsers.DocumentBuilder; import javax.xml.xpath.*; import org.w3c.dom.*; import org.w3c.dom.ls.DOMImplementationLS; +import org.w3c.dom.ls.LSParser; import org.w3c.dom.ls.LSSerializer; -// import org.xml.sax.EntityResolver; +import org.w3c.dom.ls.LSInput; public final class WeblogPopulate { @@ -29,12 +29,11 @@ public final class WeblogPopulate { public static void populate(InputStream in) throws Exception { - final DocumentBuilder db = DamlEngine.GetDocumentBuilder.db; - - final DOMImplementationLS domi - = (DOMImplementationLS)(db.getDOMImplementation()); - LSSerializer ser = domi.createLSSerializer(); + final DOMImplementationLS domils + = (DOMImplementationLS)(DamlEngine.IncantDOM.getDOMI()); + LSSerializer ser = domils.createLSSerializer(); ser.getDomConfig().setParameter("xml-declaration", false); + LSParser par = domils.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null); MessageDigest sha1 = MessageDigest.getInstance("SHA-1"); @@ -53,7 +52,9 @@ public final class WeblogPopulate { final PreparedStatement setCatSt = conn.prepareStatement("INSERT INTO incat(id,code) VALUES (?,?)"); - Document doc = db.parse(in); + LSInput input = domils.createLSInput(); + input.setByteStream(in); + Document doc = par.parse(input); XPathFactory xpf = XPathFactory.newInstance(); XPath xp = xpf.newXPath(); xp.setNamespaceContext(new DamlEngine.DamlNSMapping()); -- cgit v1.2.3