Voy a intentar migrar la documentación de geotools a una tecnología diferente (que no sea wiki) para que los ejemplos de código no queden desfasados.
Actualización esto ya está hecho (he reunido las cosas para que todos los ejemplos de geometría estén juntos):
Aquí hay un ejemplo completo de esa página:
SimpleFeatureType TYPE = DataUtilities.createType("location", "geom:Point,name:String");
File locationFile = new File("location.xsd");
locationFile = locationFile.getCanonicalFile();
locationFile.createNewFile();
URL locationURL = locationFile.toURI().toURL();
URL baseURL = locationFile.getParentFile().toURI().toURL();
FileOutputStream xsd = new FileOutputStream(locationFile);
GML encode = new GML(Version.GML2);
encode.setBaseURL(baseURL);
encode.setNamespace("location", locationURL.toExternalForm());
encode.encode(xsd, TYPE);
xsd.close();
SimpleFeatureCollection collection = FeatureCollections.newCollection("internal");
WKTReader2 wkt = new WKTReader2();
collection.add(SimpleFeatureBuilder.build(TYPE, new Object[] { wkt.read("POINT (1 2)"),"name1" }, null));
collection.add(SimpleFeatureBuilder.build(TYPE, new Object[] { wkt.read("POINT (4 4)"),"name2" }, null));
ByteArrayOutputStream xml = new ByteArrayOutputStream();
GML encode2 = new GML(Version.GML2);
encode2.setBaseURL(baseURL);
encode2.setNamespace("location", "location.xsd");
encode2.encode(out2, collection);
xml.close();
String gml = xml.toString();
Los casos de prueba que se incluyen con el código fuente son ejemplos adicionales de cómo utilizar las 4 tecnologías diferentes de análisis sintáctico de GML.
- SAX
- DOM
- GTXML versión 1.x (utilizado para GML2 en WFSDataStore VERSION=1.0)
- GTXML versión 4.x (utilizado para todo lo demás ahora )
Las dos tecnologías GTXML son básicamente una combinación de la mejor parte del analizador SAX con la capacidad de averiguar qué fragmento de código (llamado binding) se utiliza para analizar cada elemento a medida que entra (basándose en la búsqueda del elemento en el esquema).