2 using System
.Collections
;
3 using System
.Collections
.Generic
;
7 internal class XmlSimpleDictionaryReader
:
8 XmlDictionaryReader
, IXmlLineInfo
, IXmlNamespaceResolver
12 XmlDictionaryReader as_dict_reader
;
13 IXmlLineInfo as_line_info
;
14 OnXmlDictionaryReaderClose onClose
;
16 public XmlSimpleDictionaryReader (XmlReader reader
)
21 public XmlSimpleDictionaryReader (XmlReader reader
,
22 XmlDictionary dictionary
)
23 : this (reader
, dictionary
, null)
27 public XmlSimpleDictionaryReader (XmlReader reader
,
28 XmlDictionary dictionary
, OnXmlDictionaryReaderClose onClose
)
31 this.onClose
= onClose
;
32 as_line_info
= reader
as IXmlLineInfo
;
33 as_dict_reader
= reader
as XmlDictionaryReader
;
35 if (dictionary
== null)
36 dictionary
= new XmlDictionary ();
41 public int LineNumber
{
42 get { return as_line_info != null ? as_line_info.LineNumber : 0; }
45 public int LinePosition
{
46 get { return as_line_info != null ? as_line_info.LinePosition : 0; }
49 public bool HasLineInfo ()
51 return as_line_info
!= null ? as_line_info
.HasLineInfo () : false;
55 #region XmlDictionaryReader
57 public override bool CanCanonicalize
{
58 get { return as_dict_reader != null ? as_dict_reader.CanCanonicalize : false; }
61 public override void EndCanonicalization ()
63 if (as_dict_reader
!= null)
64 as_dict_reader
.EndCanonicalization ();
66 throw new NotSupportedException ();
69 // no need to override for GetAttribute(), IndexOfLocalName(),
70 // IsLocalName(), IsNamespaceUri(), IsStartElement()
72 public override bool TryGetLocalNameAsDictionaryString (
73 out XmlDictionaryString localName
)
75 // FIXME: find out when it returns true.
78 // if (!dict.TryLookup (LocalName, out localName))
83 public override bool TryGetNamespaceUriAsDictionaryString (
84 out XmlDictionaryString namespaceUri
)
86 // FIXME: find out when it returns true.
89 // if (!dict.TryLookup (NamespaceURI, out namespaceUri))
95 #region IXmlNamespaceResolver
97 public IDictionary
<string,string> GetNamespacesInScope (
98 XmlNamespaceScope scope
)
100 IXmlNamespaceResolver nsr
= reader
as IXmlNamespaceResolver
;
101 return nsr
.GetNamespacesInScope (scope
);
104 public string LookupPrefix (string ns
)
106 IXmlNamespaceResolver nsr
= reader
as IXmlNamespaceResolver
;
107 return nsr
.LookupPrefix (NameTable
.Get (ns
));
114 public override int AttributeCount
{
115 get { return reader.AttributeCount; }
118 public override string BaseURI
{
119 get { return reader.BaseURI; }
122 public override int Depth
{
123 get { return reader.Depth; }
126 public override XmlNodeType NodeType
128 get { return reader.NodeType; }
131 public override string Name
{
132 get { return reader.Name; }
135 public override string LocalName
{
136 get { return reader.LocalName; }
139 public override string NamespaceURI
{
140 get { return reader.NamespaceURI; }
143 public override string Prefix
{
144 get { return reader.Prefix; }
147 public override bool HasValue
{
148 get { return reader.HasValue; }
151 public override string Value
{
152 get { return reader.Value; }
155 public override bool IsEmptyElement
{
156 get { return reader.IsEmptyElement; }
159 public override bool IsDefault
{
160 get { return reader.IsDefault; }
163 public override char QuoteChar
{
164 get { return reader.QuoteChar; }
167 public override string XmlLang
{
168 get { return reader.XmlLang; }
171 public override XmlSpace XmlSpace
{
172 get { return reader.XmlSpace; }
175 public override string this [int i
] {
176 get { return reader [i]; }
179 public override string this [string name
] {
180 get { return reader [name]; }
183 public override string this [string localName
, string namespaceURI
] {
184 get { return reader [localName, namespaceURI]; }
187 public override bool EOF
{
188 get { return reader.EOF; }
191 public override ReadState ReadState
{
192 get { return reader.ReadState; }
195 public override XmlNameTable NameTable
{
196 get { return reader.NameTable; }
199 public override string GetAttribute (string name
)
201 return reader
.GetAttribute (name
);
204 public override string GetAttribute (string localName
, string namespaceURI
)
206 return reader
.GetAttribute (localName
, namespaceURI
);
209 public override string GetAttribute (int i
)
211 return reader
.GetAttribute (i
);
214 public override bool MoveToAttribute (string name
)
216 return reader
.MoveToAttribute (name
);
219 public override bool MoveToAttribute (string localName
, string namespaceURI
)
221 return reader
.MoveToAttribute (localName
, namespaceURI
);
224 public override void MoveToAttribute (int i
)
226 reader
.MoveToAttribute (i
);
229 public override bool MoveToFirstAttribute ()
231 return reader
.MoveToFirstAttribute ();
234 public override bool MoveToNextAttribute ()
236 return reader
.MoveToNextAttribute ();
239 public override bool MoveToElement ()
241 return reader
.MoveToElement ();
244 public override void Close ()
251 public override bool Read ()
255 dict
.Add (reader
.Prefix
);
256 dict
.Add (reader
.LocalName
);
257 dict
.Add (reader
.NamespaceURI
);
258 if (reader
.MoveToFirstAttribute ()) {
260 dict
.Add (reader
.Prefix
);
261 dict
.Add (reader
.LocalName
);
262 dict
.Add (reader
.NamespaceURI
);
263 dict
.Add (reader
.Value
);
264 } while (reader
.MoveToNextAttribute ());
265 reader
.MoveToElement ();
270 public override string ReadString ()
272 return reader
.ReadString ();
275 public override string ReadInnerXml ()
277 return reader
.ReadInnerXml ();
280 public override string ReadOuterXml ()
282 return reader
.ReadOuterXml ();
285 public override string LookupNamespace (string prefix
)
287 return reader
.LookupNamespace (prefix
);
290 public override void ResolveEntity ()
292 reader
.ResolveEntity ();
294 public override bool ReadAttributeValue ()
296 return reader
.ReadAttributeValue ();