/*
* 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 javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.xerces.util.DOMUtil;
import org.geotools.filter.FilterDOMParser;
import org.geotools.filter.FilterFilter;
import org.geotools.filter.FilterHandler;
import org.geotools.gml.GMLFilterDocument;
import org.geotools.gml.GMLFilterGeometry;
import org.opengis.filter.Filter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
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;
public class DOMExample {
static String xml = "<Filter xmlns:gml=\"http://www.opengis.net/gml\">"
+ " <Overlaps>"
+ " <PropertyName>testGeometry</PropertyName>"
+ "<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>"
+ " </Overlaps>" + "</Filter>";
public static void main(String args[]) throws Exception {
System.out.println("Parsing:" + xml);
StringReader reader = new StringReader(xml);
InputSource input = new InputSource(reader);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(input);
Filter filter = null;
// first grab a filter node
NodeList nodes = dom.getElementsByTagName("Filter");
for (int j = 0; j < nodes.getLength(); j++) {
Element filterNode = (Element) nodes.item(j);
NodeList list = filterNode.getChildNodes();
Node child = null;
for (int i = 0; i < list.getLength(); i++) {
child = list.item(i);
if ((child == null)
|| (child.getNodeType() != Node.ELEMENT_NODE)) {
continue;
}
filter = FilterDOMParser.parseFilter(child);
}
}
System.out.println("got:" + filter);
}
}