Revision 40793 branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld1_0_0/parsing/ExternalGraphicElement.java

View differences:

ExternalGraphicElement.java
1 1
package org.gvsig.sldsupport.impl.sld1_0_0.parsing;
2 2

  
3
import java.io.IOException;
4

  
5
import org.gvsig.sldsupport.exception.SLDReadException;
6
import org.gvsig.sldsupport.impl.util.SLDUtils;
7
import org.gvsig.sldsupport.sld.SLDTags;
8
import org.gvsig.sldsupport.sld.extent.SLDExtent;
9
import org.gvsig.sldsupport.sld.graphic.SLDExternalGraphic;
10
import org.kxml2.io.KXmlParser;
11
import org.xmlpull.v1.XmlPullParser;
12
import org.xmlpull.v1.XmlPullParserException;
13

  
3 14
public class ExternalGraphicElement {
4 15

  
16
	public static SLDExternalGraphic parse(XmlPullParser parser , String version)
17
			throws XmlPullParserException, IOException, SLDReadException {
18
		
19
		parser.require(KXmlParser.START_TAG, null, SLDTags.EXTERNALGRAPHIC);
20
		int tag = 0;
21
		
22
		SLDExternalGraphic resp = new SLDExternalGraphic();
23
		
24
		tag = parser.next();
25
		String name = parser.getName();
26
		String txt = null;
27
		while (!(SLDUtils.isStr(name, SLDTags.EXTERNALGRAPHIC) && tag == KXmlParser.END_TAG)) {
28
			
29
			switch (tag) {
30
			case KXmlParser.START_TAG:
31
				if (SLDUtils.isStr(name, SLDTags.FORMAT)) {
32
					txt = parser.nextText();
33
					resp.setFormat(txt);
34
					break;
35
				}
36
				if (SLDUtils.isStr(name, SLDTags.ONLINE_RESOURCE)) {
37
					// xlink:href="http://somesite.com/something.xml"
38
					String res = parser.getAttributeValue("xlink", "href");
39
					resp.setIsOnline(true);
40
					resp.setOnlineResource(res);
41
					break;
42
				}
43
				if (SLDUtils.isStr(name, SLDTags.INLINE_CONTENT)) {
44
					/*
45
					 * This is unlikely to work if content is binary
46
					 */
47
					txt = parser.nextText();
48
					resp.setIsOnline(false);
49
					resp.setInlineContent(txt.getBytes());
50
					break;
51
				}
52
				break;
53
			case KXmlParser.END_TAG:
54
				break;
55
			case KXmlParser.TEXT:
56
				break;
57
			}
58
			tag = parser.next();
59
		}
60

  
61
		parser.next();
62
		return resp;
63
	}	
64
	
5 65
}

Also available in: Unified diff