📄 gmlpointparser.java
字号:
package com.esri.solutions.jitk.datasources.ogc.gml.parsing;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
import org.apache.log4j.Logger;
import com.esri.solutions.jitk.datasources.ogc.gml.GMLPoint;
public class GMLPointParser {
private static final Logger _logger = Logger.getLogger(GMLPointParser.class);
public GMLPointParser() {
}
/*
* Point Example:
*
* <gml:Point>
<gml:pos>-122.457766445736 37.7633529139773</gml:pos>
</gml:Point>
*/
public GMLPoint parse(XMLEventReader xmler, XMLEvent currentEvent) throws XMLStreamException, GMLParsingException {
GMLPoint point = new GMLPoint();
String currentElementName = "";
String endElementName = "";
while (xmler.hasNext()) {
XMLEvent event = xmler.nextEvent();
if (event.isStartElement()) {
currentElementName = event.asStartElement().getName().getLocalPart();
}
if (event.isCharacters()) {
if (currentElementName.equalsIgnoreCase("pos")) {
String coords = event.asCharacters().getData();
point = parsePointFromRawGMLData(coords);
}
}
if (event.isEndElement()) {
endElementName = event.asEndElement().getName().getLocalPart();
if (endElementName.equalsIgnoreCase("Point")) {
break;
}
}
}
return point;
}
public GMLPoint parsePointFromRawGMLData(String rawGmlPoint) throws GMLParsingException {
GMLPoint point = new GMLPoint();
try {
String[] xy = rawGmlPoint.split(" ");
point.setX(xy[0]);
point.setY(xy[1]);
} catch (Exception ex) {
_logger.warn("<gml:pos> tag could not be split to X/Y, raw value: " + rawGmlPoint);
point.setX(rawGmlPoint);
point.setY("");
throw new GMLParsingException("Could now parse raw GML point data " + rawGmlPoint, ex.getCause());
}
return point;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -