package nl.ipo.cds.etl.xml; import java.io.InputStream; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; import nl.ipo.cds.etl.util.LSInputUtils; import org.deegree.commons.tom.gml.property.Property; import org.deegree.commons.tom.primitive.PrimitiveValue; import org.deegree.feature.Feature; import org.deegree.feature.types.AppSchema; import org.deegree.gml.GMLInputFactory; import org.deegree.gml.GMLStreamReader; import org.deegree.gml.GMLVersion; import org.deegree.gml.feature.StreamFeatureCollection; import org.deegree.gml.schema.GMLAppSchemaReader; import org.junit.Test; public class TestFeatureCollectionReader { private static final GMLVersion gmlVersion = GMLVersion.GML_31; @Test public void testReadFeatureCollection () throws Exception { // Appschema: final InputStream appSchemaInputStream = getClass ().getClassLoader().getResourceAsStream ("nl/ipo/cds/etl/test/appschema-overijssel-ehs.xsd"); final GMLAppSchemaReader appSchemaReader = new GMLAppSchemaReader (gmlVersion, null, LSInputUtils.createInput (appSchemaInputStream, "windows-1252")); final AppSchema appSchema = appSchemaReader.extractAppSchema (); // GML stream reader: final InputStream inputStream = getClass ().getClassLoader().getResourceAsStream ("nl/ipo/cds/etl/test/featurecollection-overijssel-ehs.xml"); final XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader (inputStream); final GMLStreamReader gmlStreamReader = GMLInputFactory.createGMLStreamReader (gmlVersion, reader); gmlStreamReader.setApplicationSchema (appSchema); final StreamFeatureCollection collection = gmlStreamReader.readFeatureCollectionStream (); for (final Feature feature: collection) { System.out.println (feature); for (final Property prop: feature.getProperties ()) { System.out.println (String.format ("- %s = %s (%s)", prop.getName ().getLocalPart (), prop.getValue(), prop.getValue ().getClass ())); if (prop.getValue () instanceof PrimitiveValue) { final PrimitiveValue pv = (PrimitiveValue)prop.getValue (); System.out.println (String.format (" = %s (%s)", pv.getValue (), pv.getValue ().getClass ())); } } } } }