/*
* GeoTools - The Open Source Java GIS Tookit
* http://geotools.org
*
* (C) 2006-2008, Open Source Geospatial Foundation (OSGeo)
*
* This file is hereby placed into the Public Domain. This means anyone is
* free to do whatever they wish with this file. Use it well and enjoy!
*/
package org.geotools.demo.xml;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringBufferInputStream;
import java.io.StringReader;
import org.geotools.filter.FilterFilter;
import org.geotools.filter.FilterHandler;
import org.geotools.gml.GMLFilterDocument;
import org.geotools.gml.GMLFilterGeometry;
import org.geotools.gml.GMLHandlerGeometry;
import org.geotools.gml.GMLHandlerJTS;
import org.opengis.filter.Filter;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
import com.vividsolutions.jts.geom.Geometry;
public class SAXExample2 {
static String xml = "<Example xmlns:gml=\"http://www.opengis.net/gml\">"
+"<gml:Polygon srsName=\"http://www.opengis.net/gml/srs/EPSG#4326\">"
+"<gml:outerBoundaryIs>"
+"<gml:LinearRing>"
+"<gml:coordinates>0,0 0,10 10,10 10,0 0,0</gml:coordinates>"
+"</gml:LinearRing>"
+"</gml:outerBoundaryIs>"
+"</gml:Polygon>"
+"</Example>";
public static void main(String args[]) throws Exception {
StringReader reader = new StringReader( xml );
InputSource input = new InputSource( reader );
Callback result = parse( input );
System.out.println( "got:"+result.getGeometry() );
}
public static Callback parse(InputSource input) throws IOException, SAXException {
// parse xml
XMLReader reader = XMLReaderFactory.createXMLReader();
Callback callback = new Callback();
GMLFilterGeometry geometryCallback = new GMLFilterGeometry( callback );
GMLFilterDocument gmlCallback = new GMLFilterDocument( geometryCallback );
reader.setContentHandler( gmlCallback );
reader.parse(input);
return callback;
}
/**
* This class is called when the SAX parser has finished
* parsing a Filter.
*/
static class Callback extends DefaultHandler implements GMLHandlerJTS {
Geometry geometry= null;
public void geometry(Geometry geometry) {
this.geometry = geometry;
}
public Geometry getGeometry() {
return geometry;
}
}
}