4 namespace System.Xml.Schema
\r
7 /// A wrapper around XmlReader
\r
9 internal class XmlSchemaReader : XmlReader, IXmlLineInfo
\r
12 ValidationEventHandler handler;
\r
14 public XmlSchemaReader(XmlReader reader,ValidationEventHandler handler)
\r
16 this.reader = reader;
\r
17 this.handler = handler;
\r
18 if(reader is IXmlLineInfo)
\r
20 IXmlLineInfo info = (IXmlLineInfo)reader;
\r
21 hasLineInfo = info.HasLineInfo();
\r
26 /// Returns the Namespace:LocalName for the object
\r
28 public string FullName
\r
30 get { return NamespaceURI + ":" + LocalName; }
\r
33 public XmlReader Reader
\r
35 get { return this.reader; }
\r
38 public void RaiseInvalidElementError()
\r
40 string errstr = "Element "+FullName + " is invalid in this context.\n";
\r
42 errstr += "The error occured on ("+((IXmlLineInfo)reader).LineNumber
\r
43 +","+((IXmlLineInfo)reader).LinePosition+")";
\r
44 XmlSchemaObject.error(handler, errstr, null);
\r
48 /// Reads till the next Element or EndElement. Also checks that the Namespace of the element is
\r
49 /// Schema's Namespace.
\r
51 /// <returns></returns>
\r
52 public bool ReadNextElement()
\r
57 if(NodeType == XmlNodeType.Element || NodeType == XmlNodeType.EndElement)
\r
59 if(reader.NamespaceURI != XmlSchema.Namespace)
\r
61 RaiseInvalidElementError();
\r
73 /// Skips to the end of the current element
\r
75 public void SkipToEnd()
\r
78 if(IsEmptyElement || NodeType != XmlNodeType.Element)
\r
80 if(NodeType == XmlNodeType.Element)
\r
93 public bool HasLineInfo()
\r
97 public int LineNumber
\r
99 get { return hasLineInfo?((IXmlLineInfo)reader).LineNumber: 0; }
\r
101 public int LinePosition
\r
103 get { return hasLineInfo?((IXmlLineInfo)reader).LinePosition: 0; }
\r
108 public override int AttributeCount
\r
110 get { return reader.AttributeCount; }
\r
112 public override string BaseURI
\r
114 get { return reader.BaseURI; }
\r
116 public override bool CanResolveEntity
\r
118 get { return reader.CanResolveEntity; }
\r
120 public override int Depth
\r
122 get { return reader.Depth; }
\r
124 public override bool EOF
\r
126 get { return reader.EOF; }
\r
128 public override bool HasAttributes
\r
130 get { return reader.HasAttributes; }
\r
132 public override bool HasValue
\r
134 get { return reader.HasValue; }
\r
136 public override bool IsDefault
\r
138 get { return reader.IsDefault; }
\r
140 public override bool IsEmptyElement
\r
142 get { return reader.IsEmptyElement; }
\r
144 public override string this[ int i ]
\r
146 get { return reader[i]; }
\r
148 public override string this[ string name ]
\r
150 get { return reader[name]; }
\r
152 public override string this[ string name, string namespaceURI ]
\r
154 get { return reader[name,namespaceURI]; }
\r
156 public override string LocalName
\r
158 get { return reader.LocalName; }
\r
160 public override string Name
\r
162 get { return reader.Name; }
\r
164 public override string NamespaceURI
\r
166 get { return reader.NamespaceURI; }
\r
168 public override XmlNameTable NameTable
\r
170 get { return reader.NameTable; }
\r
172 public override XmlNodeType NodeType
\r
174 get { return reader.NodeType; }
\r
176 public override string Prefix
\r
178 get { return reader.Prefix; }
\r
180 public override char QuoteChar
\r
182 get { return reader.QuoteChar; }
\r
184 public override ReadState ReadState
\r
186 get { return reader.ReadState; }
\r
188 public override string Value
\r
190 get { return reader.Value; }
\r
192 public override string XmlLang
\r
194 get { return reader.XmlLang; }
\r
196 public override XmlSpace XmlSpace
\r
198 get { return reader.XmlSpace; }
\r
201 public override void Close()
\r
206 public override bool Equals(object obj)
\r
208 return reader.Equals(obj);
\r
211 public override string GetAttribute(int i)
\r
213 return reader.GetAttribute(i);
\r
216 public override string GetAttribute(string name)
\r
218 return reader.GetAttribute(name);
\r
221 public override string GetAttribute(string name, string namespaceURI)
\r
223 return reader.GetAttribute(name, namespaceURI);
\r
226 public override int GetHashCode()
\r
228 return reader.GetHashCode();
\r
231 public override bool IsStartElement()
\r
233 return reader.IsStartElement();
\r
236 public override bool IsStartElement(string localname, string ns)
\r
238 return reader.IsStartElement(localname, ns);
\r
241 public override bool IsStartElement(string name)
\r
243 return reader.IsStartElement(name);
\r
246 public override string LookupNamespace(string prefix)
\r
248 return reader.LookupNamespace(prefix);
\r
251 public override void MoveToAttribute(int i)
\r
253 reader.MoveToAttribute(i);
\r
256 public override bool MoveToAttribute(string name)
\r
258 return reader.MoveToAttribute(name);
\r
261 public override bool MoveToAttribute(string name, string ns)
\r
263 return reader.MoveToAttribute(name,ns);
\r
266 public override System.Xml.XmlNodeType MoveToContent()
\r
268 return reader.MoveToContent();
\r
271 public override bool MoveToElement()
\r
273 return reader.MoveToElement();
\r
276 public override bool MoveToFirstAttribute()
\r
278 return reader.MoveToFirstAttribute();
\r
281 public override bool MoveToNextAttribute()
\r
283 return reader.MoveToNextAttribute();
\r
286 public override bool Read()
\r
288 return reader.Read();
\r
291 public override bool ReadAttributeValue()
\r
293 return reader.ReadAttributeValue();
\r
296 public override string ReadElementString()
\r
298 return reader.ReadElementString();
\r
301 public override string ReadElementString(string localname, string ns)
\r
303 return reader.ReadElementString(localname, ns);
\r
306 public override string ReadElementString(string name)
\r
308 return reader.ReadElementString(name);
\r
311 public override void ReadEndElement()
\r
313 reader.ReadEndElement();
\r
316 public override string ReadInnerXml()
\r
318 return reader.ReadInnerXml();
\r
321 public override string ReadOuterXml()
\r
323 return reader.ReadOuterXml();
\r
326 public override void ReadStartElement()
\r
328 reader.ReadStartElement();
\r
331 public override void ReadStartElement(string localname, string ns)
\r
333 reader.ReadStartElement(localname, ns);
\r
336 public override void ReadStartElement(string name)
\r
338 reader.ReadStartElement(name);
\r
341 public override string ReadString()
\r
343 return reader.ReadString();
\r
346 public override void ResolveEntity()
\r
348 reader.ResolveEntity();
\r
351 public override void Skip()
\r
356 public override string ToString()
\r
358 return reader.ToString();
\r