Revision 53 branches/v1_9_0/libGPE-GML/src/org/gvsig/gpe/gml/parser/v2/geometries/LineStringTypeBinding.java
LineStringTypeBinding.java | ||
---|---|---|
8 | 8 |
import org.gvsig.gpe.gml.parser.v2.coordinates.CoordTypeIterator; |
9 | 9 |
import org.gvsig.gpe.gml.parser.v2.coordinates.CoordinatesTypeIterator; |
10 | 10 |
import org.gvsig.gpe.gml.utils.GMLTags; |
11 |
import org.gvsig.gpe.xml.stream.EventType; |
|
11 | 12 |
import org.gvsig.gpe.xml.stream.IXmlStreamReader; |
12 | 13 |
import org.gvsig.gpe.xml.stream.XmlStreamException; |
13 | 14 |
import org.gvsig.gpe.xml.utils.CompareUtils; |
... | ... | |
109 | 110 |
* @throws IOException |
110 | 111 |
*/ |
111 | 112 |
public Object parse(IXmlStreamReader parser,GPEDefaultGmlParser handler) throws XmlStreamException, IOException { |
113 |
|
|
114 |
parser.require(EventType.START_ELEMENT, GMLTags.GML_LINESTRING); |
|
115 |
|
|
112 | 116 |
boolean endFeature = false; |
113 |
int currentTag;
|
|
117 |
EventType currentTag;
|
|
114 | 118 |
Object lineString = null; |
115 | 119 |
|
116 | 120 |
super.setAtributtes(parser, handler.getErrorHandler()); |
117 | 121 |
|
118 |
QName tag = parser.getName(); |
|
122 |
QName tag = parser.getElementName();
|
|
119 | 123 |
currentTag = parser.getEventType(); |
120 | 124 |
|
121 | 125 |
while (!endFeature){ |
122 |
switch(currentTag){ |
|
123 |
case IXmlStreamReader.START_ELEMENT: |
|
126 |
switch(currentTag.getCode()){ |
|
127 |
case EventType.START_ELEMENT_CODE: |
|
128 |
currentTag = parser.nextTag(); |
|
129 |
tag = parser.getElementName(); |
|
124 | 130 |
lineString = parseTag(parser, handler, tag, id, srsName); |
125 |
//The parser pointer is in the </gml:LoneString> tag |
|
126 |
if (lineString != null){ |
|
127 |
return lineString; |
|
128 |
} |
|
129 |
break; |
|
130 |
case IXmlStreamReader.END_ELEMENT: |
|
131 |
return lineString; |
|
132 |
case EventType.END_ELEMENT_CODE: |
|
131 | 133 |
if (CompareUtils.compareWithNamespace(tag,GMLTags.GML_LINESTRING)){ |
132 | 134 |
endFeature = true; |
133 | 135 |
handler.getContentHandler().endLineString(lineString); |
134 | 136 |
} |
135 | 137 |
break; |
136 |
case IXmlStreamReader.CHARACTERS: |
|
137 |
|
|
138 |
break; |
|
139 | 138 |
} |
139 |
/*GR: no obligo a terminar de parsear todo, para que... si tenemos random access :) |
|
140 | 140 |
if (!endFeature){ |
141 |
currentTag = parser.next(); |
|
142 |
tag = parser.getName(); |
|
141 |
currentTag = parser.nextTag();
|
|
142 |
tag = parser.getElementName();
|
|
143 | 143 |
} |
144 |
*/ |
|
144 | 145 |
} |
145 | 146 |
|
146 | 147 |
return lineString; |
Also available in: Unified diff