Ignore:
Timestamp:
2010-10-16T22:08:17+02:00 (14 years ago)
Author:
stoecker
Message:

add XML checking for mappaint files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java

    r3385 r3612  
    55
    66import java.io.Reader;
     7import java.io.IOException;
    78import java.lang.reflect.Field;
    89import java.lang.reflect.Method;
     
    1920import javax.xml.parsers.SAXParserFactory;
    2021import javax.xml.transform.Source;
     22import javax.xml.transform.stream.StreamSource;
    2123import javax.xml.validation.Schema;
    2224import javax.xml.validation.SchemaFactory;
    2325import javax.xml.validation.ValidatorHandler;
     26
     27import org.openstreetmap.josm.io.MirroredInputStream;
    2428
    2529import org.xml.sax.Attributes;
     
    276280
    277281    private Map<String, Entry> mapping = new HashMap<String, Entry>();
    278     private Parser parser;
     282    private DefaultHandler parser;
    279283
    280284    /**
     
    297301    public XmlObjectParser() {
    298302        parser = new Parser();
     303    }
     304
     305    public XmlObjectParser(DefaultHandler handler) {
     306        parser = handler;
    299307    }
    300308
     
    328336    }
    329337
    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        }
    341352    }
    342353
Note: See TracChangeset for help on using the changeset viewer.