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 StartElement asStartElement()
120: {
121: return (StartElement) this;
122: }
123:
124: public EndElement asEndElement()
125: {
126: return (EndElement) this;
127: }
128:
129: public Characters asCharacters()
130: {
131: return (Characters) this;
132: }
133:
134: public QName getSchemaType()
135: {
136: return null;
137: }
138:
139: public abstract void writeAsEncodedUnicode(Writer writer)
140: throws XMLStreamException;
141:
142: protected String encode(String text, boolean inAttr)
143: {
144: int len = text.length();
145: StringBuffer buf = null;
146: for (int i = 0; i < len; i++)
147: {
148: char c = text.charAt(i);
149: if (c == '<')
150: {
151: if (buf == null)
152: {
153: buf = new StringBuffer(text.substring(0, i));
154: }
155: buf.append("<");
156: }
157: else if (c == '>')
158: {
159: if (buf == null)
160: {
161: buf = new StringBuffer(text.substring(0, i));
162: }
163: buf.append(">");
164: }
165: else if (c == '&')
166: {
167: if (buf == null)
168: {
169: buf = new StringBuffer(text.substring(0, i));
170: }
171: buf.append("&");
172: }
173: else if (c == '\'' && inAttr)
174: {
175: if (buf == null)
176: {
177: buf = new StringBuffer(text.substring(0, i));
178: }
179: buf.append("'");
180: }
181: else if (c == '"' && inAttr)
182: {
183: if (buf == null)
184: {
185: buf = new StringBuffer(text.substring(0, i));
186: }
187: buf.append(""");
188: }
189: else if (buf != null)
190: {
191: buf.append(c);
192: }
193: }
194: return (buf == null) ? text : buf.toString();
195: }
196:
197: }