featuretypelistparser.java
来自「esri的ArcGIS Server超级学习模板程序(for java)」· Java 代码 · 共 99 行
JAVA
99 行
package com.esri.solutions.jitk.datasources.ogc.wfs.parsing;
import java.util.ArrayList;
import java.util.List;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
import com.esri.solutions.jitk.datasources.ogc.gml.GMLPoint;
import com.esri.solutions.jitk.datasources.ogc.gml.parsing.GMLParsingException;
import com.esri.solutions.jitk.datasources.ogc.gml.parsing.GMLPointParser;
import com.esri.solutions.jitk.datasources.ogc.wfs.FeatureTypeDescription;
import com.esri.solutions.jitk.datasources.ogc.wfs.parsing.stax.IElementParser;
public class FeatureTypeListParser implements IElementParser {
List<FeatureTypeDescription> _featureTypes = null;
/**
* - <wfs:FeatureTypeList>
*
- <wfs:FeatureType>
<wfs:Name>WfsTest:counties</wfs:Name>
<wfs:Title>counties</wfs:Title>
<wfs:DefaultSRS>urn:x-ogc:def:crs:EPSG:6.9:4269</wfs:DefaultSRS>
<wfs:OtherSRS>urn:x-ogc:def:crs:EPSG:6.9:4326</wfs:OtherSRS>
- <wfs:OutputFormats>
<wfs:Format>text/xml; subType=gml/3.1.1/profiles/gmlsf/1.0.0/0</wfs:Format>
</wfs:OutputFormats>
- <ows:WGS84BoundingBox>
<ows:LowerCorner>-178.217598362366 18.9247817993165</ows:LowerCorner>
<ows:UpperCorner>-66.9692710360024 71.4062353532711</ows:UpperCorner>
</ows:WGS84BoundingBox>
</wfs:FeatureType>
- <wfs:FeatureType>
:
:
*/
public FeatureTypeListParser() {
}
public void parse(XMLEventReader xmler, XMLEvent currentEvent) throws XMLStreamException, GMLParsingException {
XMLEvent event;
_featureTypes = new ArrayList<FeatureTypeDescription>();
FeatureTypeDescription currentFt = null;
String currentElementName = "";
GMLPointParser gmlPointParser = new GMLPointParser();
while (xmler.hasNext()) {
event = xmler.nextEvent();
if (event.isStartElement()) {
currentElementName = event.asStartElement().getName().getLocalPart();
if (currentElementName.equals("FeatureType")) {
currentFt = new FeatureTypeDescription();
}
}
if (event.isCharacters()) {
if (currentElementName.equals("Name")) {
String name = event.asCharacters().getData();
currentFt.setXSDName(name);
} else if (currentElementName.equals("Title")) {
currentFt.setTitle(event.asCharacters().getData());
} else if (currentElementName.equals("DefaultSRS")) {
currentFt.setDefaultSrs(event.asCharacters().getData());
} else if (currentElementName.equals("OtherSRS")) {
currentFt.addOtherSrs(event.asCharacters().getData());
} else if (currentElementName.equals("LowerCorner")) {
GMLPoint point = gmlPointParser.parsePointFromRawGMLData(event.asCharacters().getData());
currentFt.setLowerCorner(point);
} else if (currentElementName.equals("UpperCorner")) {
GMLPoint point = gmlPointParser.parsePointFromRawGMLData(event.asCharacters().getData());
currentFt.setUpperCorner(point);
}
}
if (event.isEndElement()) {
String endElement = event.asEndElement().getName().getLocalPart();
if (endElement.equals("FeatureType")) {
_featureTypes.add(currentFt);
}
if (endElement.equals("FeatureTypeList")) {
// Stop pull parsing
break;
}
}
}
}
public List<FeatureTypeDescription> getFeatureTypes() {
return _featureTypes;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?