The example below adds DOM schema validation when you are parsing the XML input file to the DOM load/save example.
The example also features a DOM Level 3 DOMErrorHandler.
Also compare with the editing validation example.
// SimpleDOML3XSD.java
import org.w3c.dom.*;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.*;
import javax.xml.XMLConstants;
import java.io.OutputStreamWriter;
public class SimpleDOML3LSXSD {
public static void main(String args[]) {
Document doc;
try {
// Create DOM Document using DOM Level 3 Load
DOMImplementationLS ls = (DOMImplementationLS) DOMImplementationRegistry.
newInstance().getDOMImplementation("LS");
LSParser builder = ls.createLSParser(
DOMImplementationLS.MODE_SYNCHRONOUS,
// for DTD use XMLConstants.XML_DTD_NS_URI
XMLConstants.W3C_XML_SCHEMA_NS_URI);
DOMConfiguration config = builder.getDomConfig();
config.setParameter("validate", true);
config.setParameter("error-handler", new StdErrorHandler());
doc = builder.parseURI(args[0]);
// Obtain root elements
Element root = doc.getDocumentElement();
// Add comment texts
Comment comment = doc.createComment("Training text");
root.appendChild(comment);
// Output to standard output; using DOM Level 3 save
LSOutput target = ls.createLSOutput();
target.setCharacterStream(new OutputStreamWriter(System.out));
ls.createLSSerializer().write(doc, target);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
System.exit(0);
}
}
private static class StdErrorHandler implements DOMErrorHandler {
public boolean handleError(DOMError e) {
String prefix = "Severity ";
if (e.getLocation().getLineNumber() != -1) {
prefix = "Line " + e.getLocation().getLineNumber()
+ " column " + e.getLocation().getColumnNumber()
+ ", severity ";
}
System.err.println(
prefix + e.getSeverity()
+ " issue: " + e.getMessage());
return true;
}
}
}
No comments:
Post a Comment