Revision 53 branches/v1_9_0/libGPE-GML/src/org/gvsig/gpe/gml/parser/v2/geometries/LineStringTypeBinding.java

View differences:

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