1:
37:
38: package ;
39:
40: import ;
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49:
50:
55: public abstract class XMLEventImpl
56: implements XMLEvent
57: {
58:
59: protected final Location location;
60:
61: protected XMLEventImpl(Location location)
62: {
63: this.location = location;
64: }
65:
66: public abstract int getEventType();
67:
68: public Location getLocation()
69: {
70: return location;
71: }
72:
73: public boolean isStartElement()
74: {
75: return getEventType() == START_ELEMENT;
76: }
77:
78: public boolean isAttribute()
79: {
80: return getEventType() == ATTRIBUTE;
81: }
82:
83: public boolean isNamespace()
84: {
85: return getEventType() == NAMESPACE;
86: }
87:
88: public boolean isEndElement()
89: {
90: return getEventType() == END_ELEMENT;
91: }
92:
93: public boolean isEntityReference()
94: {
95: return getEventType() == ENTITY_REFERENCE;
96: }
97:
98: public boolean isProcessingInstruction()
99: {
100: return getEventType() == PROCESSING_INSTRUCTION;
101: }
102:
103: public boolean isCharacters()
104: {
105: int et = getEventType();
106: return et == CHARACTERS || et == CDATA;
107: }
108:
109: public boolean isStartDocument()
110: {
111: return getEventType() == START_DOCUMENT;
112: }
113:
114: public boolean isEndDocument()
115: {
116: return getEventType() == END_DOCUMENT;
117: }
118:
119: public boolean isStartEntity()
120: {
121: return getEventType() == START_ENTITY;
122: }
123:
124: public boolean isEndEntity()
125: {
126: return getEventType() == END_ENTITY;
127: }
128:
129: public StartElement asStartElement()
130: {
131: return (StartElement) this;
132: }
133:
134: public EndElement asEndElement()
135: {
136: return (EndElement) this;
137: }
138:
139: public Characters asCharacters()
140: {
141: return (Characters) this;
142: }
143:
144: public QName getSchemaType()
145: {
146: return null;
147: }
148:
149: public abstract void writeAsEncodedUnicode(Writer writer)
150: throws XMLStreamException;
151:
152: protected String encode(String text, boolean inAttr)
153: {
154: int len = text.length();
155: StringBuffer buf = null;
156: for (int i = 0; i < len; i++)
157: {
158: char c = text.charAt(i);
159: if (c == '<')
160: {
161: if (buf == null)
162: {
163: buf = new StringBuffer(text.substring(0, i));
164: }
165: buf.append("<");
166: }
167: else if (c == '>')
168: {
169: if (buf == null)
170: {
171: buf = new StringBuffer(text.substring(0, i));
172: }
173: buf.append(">");
174: }
175: else if (c == '&')
176: {
177: if (buf == null)
178: {
179: buf = new StringBuffer(text.substring(0, i));
180: }
181: buf.append("&");
182: }
183: else if (c == '\'' && inAttr)
184: {
185: if (buf == null)
186: {
187: buf = new StringBuffer(text.substring(0, i));
188: }
189: buf.append("'");
190: }
191: else if (c == '"' && inAttr)
192: {
193: if (buf == null)
194: {
195: buf = new StringBuffer(text.substring(0, i));
196: }
197: buf.append(""");
198: }
199: else if (buf != null)
200: {
201: buf.append(c);
202: }
203: }
204: return (buf == null) ? text : buf.toString();
205: }
206:
207: }