1 16 17 package dom; 18 19 import org.w3c.dom.DOMConfiguration ; 20 import org.w3c.dom.DOMError ; 21 import org.w3c.dom.DOMErrorHandler ; 22 import org.w3c.dom.Document ; 23 import org.w3c.dom.Element ; 24 import org.w3c.dom.Node ; 25 import org.w3c.dom.bootstrap.DOMImplementationRegistry ; 26 import org.w3c.dom.ls.DOMImplementationLS ; 27 import org.w3c.dom.ls.LSOutput ; 28 import org.w3c.dom.ls.LSParser ; 29 import org.w3c.dom.ls.LSParserFilter ; 30 import org.w3c.dom.ls.LSSerializer ; 31 import org.w3c.dom.traversal.NodeFilter; 32 33 38 public class DOM3 implements DOMErrorHandler , LSParserFilter { 39 40 41 protected static final boolean DEFAULT_NAMESPACES = true; 42 43 44 protected static final boolean DEFAULT_VALIDATION = false; 45 46 47 protected static final boolean DEFAULT_SCHEMA_VALIDATION = false; 48 49 static LSParser builder; 50 public static void main( String [] argv) { 51 52 if (argv.length == 0) { 53 printUsage(); 54 System.exit(1); 55 } 56 57 58 try { 59 60 System.setProperty(DOMImplementationRegistry.PROPERTY,"org.apache.xerces.dom.DOMXSImplementationSourceImpl"); 62 DOMImplementationRegistry registry = 63 DOMImplementationRegistry.newInstance(); 64 65 DOMImplementationLS impl = 66 (DOMImplementationLS )registry.getDOMImplementation("LS"); 67 68 builder = impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null); 70 71 DOMConfiguration config = builder.getDomConfig(); 72 73 DOMErrorHandler errorHandler = new DOM3(); 75 76 LSParserFilter filter = new DOM3(); 78 79 builder.setFilter(filter); 80 81 config.setParameter("error-handler", errorHandler); 83 84 85 config.setParameter("validate",Boolean.TRUE); 88 89 config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema"); 91 94 config.setParameter("schema-location","personal.xsd"); 96 97 System.out.println("Parsing "+argv[0]+"..."); 99 Document doc = builder.parseURI(argv[0]); 100 101 config = doc.getDomConfig(); 103 104 config.setParameter("error-handler", errorHandler); 105 106 config.setParameter("validate", Boolean.TRUE); 108 config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema"); 109 config.setParameter("schema-location","data/personal.xsd"); 111 112 config.setParameter("comments", Boolean.FALSE); 114 115 System.out.println("Normalizing document... "); 116 doc.normalizeDocument(); 117 118 119 LSSerializer domWriter = impl.createLSSerializer(); 121 122 System.out.println("Serializing document... "); 123 config = domWriter.getDomConfig(); 124 config.setParameter("xml-declaration", Boolean.FALSE); 125 127 LSOutput dOut = impl.createLSOutput(); 130 dOut.setByteStream(System.out); 131 domWriter.write(doc,dOut); 132 133 } catch ( Exception ex ) { 134 ex.printStackTrace(); 135 } 136 } 137 138 139 private static void printUsage() { 140 141 System.err.println("usage: java dom.DOM3 uri ..."); 142 System.err.println(); 143 System.err.println("NOTE: You can only validate DOM tree against XML Schemas."); 144 145 } 147 148 public boolean handleError(DOMError error){ 149 short severity = error.getSeverity(); 150 if (severity == DOMError.SEVERITY_ERROR) { 151 System.out.println("[dom3-error]: "+error.getMessage()); 152 } 153 154 if (severity == DOMError.SEVERITY_WARNING) { 155 System.out.println("[dom3-warning]: "+error.getMessage()); 156 } 157 return true; 158 159 } 160 163 public short acceptNode(Node enode) { 164 return NodeFilter.FILTER_ACCEPT; 165 } 166 167 170 public int getWhatToShow() { 171 return NodeFilter.SHOW_ELEMENT; 172 } 173 174 177 public short startElement(Element elt) { 178 return LSParserFilter.FILTER_ACCEPT; 179 } 180 181 } 182 183 184 185
| Popular Tags
|