Changeset 3612 in josm for trunk/src/org/openstreetmap/josm/tools
- Timestamp:
- 2010-10-16T22:08:17+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java
r3385 r3612 5 5 6 6 import java.io.Reader; 7 import java.io.IOException; 7 8 import java.lang.reflect.Field; 8 9 import java.lang.reflect.Method; … … 19 20 import javax.xml.parsers.SAXParserFactory; 20 21 import javax.xml.transform.Source; 22 import javax.xml.transform.stream.StreamSource; 21 23 import javax.xml.validation.Schema; 22 24 import javax.xml.validation.SchemaFactory; 23 25 import javax.xml.validation.ValidatorHandler; 26 27 import org.openstreetmap.josm.io.MirroredInputStream; 24 28 25 29 import org.xml.sax.Attributes; … … 276 280 277 281 private Map<String, Entry> mapping = new HashMap<String, Entry>(); 278 private Parser parser;282 private DefaultHandler parser; 279 283 280 284 /** … … 297 301 public XmlObjectParser() { 298 302 parser = new Parser(); 303 } 304 305 public XmlObjectParser(DefaultHandler handler) { 306 parser = handler; 299 307 } 300 308 … … 328 336 } 329 337 330 public Iterable<Object> startWithValidation(final Reader in, String namespace, Source schemaSource) throws SAXException { 331 SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); 332 Schema schema = factory.newSchema(schemaSource); 333 ValidatorHandler validator = schema.newValidatorHandler(); 334 validator.setContentHandler(parser); 335 validator.setErrorHandler(parser); 336 337 AddNamespaceFilter filter = new AddNamespaceFilter(namespace); 338 filter.setContentHandler(validator); 339 340 return start(in, filter); 338 public Iterable<Object> startWithValidation(final Reader in, String namespace, String schemaSource) throws SAXException { 339 try { 340 SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); 341 Schema schema = factory.newSchema(new StreamSource(new MirroredInputStream(schemaSource))); 342 ValidatorHandler validator = schema.newValidatorHandler(); 343 validator.setContentHandler(parser); 344 validator.setErrorHandler(parser); 345 346 AddNamespaceFilter filter = new AddNamespaceFilter(namespace); 347 filter.setContentHandler(validator); 348 return start(in, filter); 349 } catch(IOException e) { 350 throw new SAXException(tr("Failed to load XML schema."), e); 351 } 341 352 } 342 353
Note:
See TracChangeset
for help on using the changeset viewer.