org.entur.netex.conversion.osm.OsmUnmarshaller Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of osm-to-netex Show documentation
Show all versions of osm-to-netex Show documentation
Converts osm files to netex files
The newest version!
package org.entur.netex.conversion.osm;
import org.openstreetmap.osm.Osm;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLFilter;
import org.xml.sax.XMLReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.UnmarshallerHandler;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
/**
* Unmarshaller that makes it possible to read OSM XML files without namespace.
*/
public class OsmUnmarshaller {
private static final String OSM_NAMESPACE = "http://openstreetmap.org/osm/0.6";
private final XMLFilter namespaceFilter;
private final UnmarshallerHandler unmarshallerHandler;
public OsmUnmarshaller(boolean performValidation) throws ParserConfigurationException, SAXException, JAXBException, IOException {
JAXBContext osmContext = JAXBContext.newInstance(Osm.class);
namespaceFilter = new NamespaceFilter(OSM_NAMESPACE);
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserFactory.newSAXParser();
XMLReader xmlReader = saxParser.getXMLReader();
namespaceFilter.setParent(xmlReader);
Unmarshaller osmContextUnmarshaller = osmContext.createUnmarshaller();
if(performValidation) {
OsmSchemaValidator osmSchemaValidator = new OsmSchemaValidator();
osmContextUnmarshaller.setSchema(osmSchemaValidator.getSchema());
}
unmarshallerHandler = osmContextUnmarshaller.getUnmarshallerHandler();
namespaceFilter.setContentHandler(unmarshallerHandler);
}
public Osm unmarshall(InputSource source) throws JAXBException, IOException, SAXException {
namespaceFilter.parse(source);
return (Osm) unmarshallerHandler.getResult();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy