| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- namespace System.Xml
- {
- internal class XmlSimpleDictionaryReader :
- XmlDictionaryReader, IXmlLineInfo, IXmlNamespaceResolver
- {
- XmlDictionary dict;
- XmlReader reader;
- XmlDictionaryReader as_dict_reader;
- IXmlLineInfo as_line_info;
- OnXmlDictionaryReaderClose onClose;
- public XmlSimpleDictionaryReader (XmlReader reader)
- : this (reader, null)
- {
- }
- public XmlSimpleDictionaryReader (XmlReader reader,
- XmlDictionary dictionary)
- : this (reader, dictionary, null)
- {
- }
- public XmlSimpleDictionaryReader (XmlReader reader,
- XmlDictionary dictionary, OnXmlDictionaryReaderClose onClose)
- {
- this.reader = reader;
- this.onClose = onClose;
- as_line_info = reader as IXmlLineInfo;
- as_dict_reader = reader as XmlDictionaryReader;
- if (dictionary == null)
- dictionary = new XmlDictionary ();
- dict = dictionary;
- }
- #region IXmlLineInfo
- public int LineNumber {
- get { return as_line_info != null ? as_line_info.LineNumber : 0; }
- }
- public int LinePosition {
- get { return as_line_info != null ? as_line_info.LinePosition : 0; }
- }
- public bool HasLineInfo ()
- {
- return as_line_info != null ? as_line_info.HasLineInfo () : false;
- }
- #endregion
- #region XmlDictionaryReader
- public override bool CanCanonicalize {
- get { return as_dict_reader != null ? as_dict_reader.CanCanonicalize : false; }
- }
- public override void EndCanonicalization ()
- {
- if (as_dict_reader != null)
- as_dict_reader.EndCanonicalization ();
- else
- throw new NotSupportedException ();
- }
- // no need to override for GetAttribute(), IndexOfLocalName(),
- // IsLocalName(), IsNamespaceUri(), IsStartElement()
- public override bool TryGetLocalNameAsDictionaryString (
- out XmlDictionaryString localName)
- {
- // FIXME: find out when it returns true.
- localName = null;
- return false;
- // if (!dict.TryLookup (LocalName, out localName))
- // return false;
- // return true;
- }
- public override bool TryGetNamespaceUriAsDictionaryString (
- out XmlDictionaryString namespaceUri)
- {
- // FIXME: find out when it returns true.
- namespaceUri = null;
- return false;
- // if (!dict.TryLookup (NamespaceURI, out namespaceUri))
- // return false;
- // return true;
- }
- #endregion
- #region IXmlNamespaceResolver
- public IDictionary<string,string> GetNamespacesInScope (
- XmlNamespaceScope scope)
- {
- IXmlNamespaceResolver nsr = reader as IXmlNamespaceResolver;
- return nsr.GetNamespacesInScope (scope);
- }
- public string LookupPrefix (string ns)
- {
- IXmlNamespaceResolver nsr = reader as IXmlNamespaceResolver;
- return nsr.LookupPrefix (NameTable.Get (ns));
- }
- #endregion
- #region XmlReader
- public override int AttributeCount {
- get { return reader.AttributeCount; }
- }
- public override string BaseURI {
- get { return reader.BaseURI; }
- }
- public override int Depth {
- get { return reader.Depth; }
- }
- public override XmlNodeType NodeType
- {
- get { return reader.NodeType; }
- }
- public override string Name {
- get { return reader.Name; }
- }
- public override string LocalName {
- get { return reader.LocalName; }
- }
- public override string NamespaceURI {
- get { return reader.NamespaceURI; }
- }
- public override string Prefix {
- get { return reader.Prefix; }
- }
- public override bool HasValue {
- get { return reader.HasValue; }
- }
- public override string Value {
- get { return reader.Value; }
- }
- public override bool IsEmptyElement {
- get { return reader.IsEmptyElement; }
- }
- public override bool IsDefault {
- get { return reader.IsDefault; }
- }
- public override char QuoteChar {
- get { return reader.QuoteChar; }
- }
- public override string XmlLang {
- get { return reader.XmlLang; }
- }
- public override XmlSpace XmlSpace {
- get { return reader.XmlSpace; }
- }
- public override string this [int i] {
- get { return reader [i]; }
- }
- public override string this [string name] {
- get { return reader [name]; }
- }
- public override string this [string localName, string namespaceURI] {
- get { return reader [localName, namespaceURI]; }
- }
- public override bool EOF {
- get { return reader.EOF; }
- }
- public override ReadState ReadState {
- get { return reader.ReadState; }
- }
- public override XmlNameTable NameTable {
- get { return reader.NameTable; }
- }
- public override string GetAttribute (string name)
- {
- return reader.GetAttribute (name);
- }
- public override string GetAttribute (string localName, string namespaceURI)
- {
- return reader.GetAttribute (localName, namespaceURI);
- }
- public override string GetAttribute (int i)
- {
- return reader.GetAttribute (i);
- }
- public override bool MoveToAttribute (string name)
- {
- return reader.MoveToAttribute (name);
- }
- public override bool MoveToAttribute (string localName, string namespaceURI)
- {
- return reader.MoveToAttribute (localName, namespaceURI);
- }
- public override void MoveToAttribute (int i)
- {
- reader.MoveToAttribute (i);
- }
- public override bool MoveToFirstAttribute ()
- {
- return reader.MoveToFirstAttribute ();
- }
- public override bool MoveToNextAttribute ()
- {
- return reader.MoveToNextAttribute ();
- }
- public override bool MoveToElement ()
- {
- return reader.MoveToElement ();
- }
- public override void Close ()
- {
- reader.Close ();
- if (onClose != null)
- onClose (this);
- }
- public override bool Read ()
- {
- if (!reader.Read ())
- return false;
- dict.Add (reader.Prefix);
- dict.Add (reader.LocalName);
- dict.Add (reader.NamespaceURI);
- if (reader.MoveToFirstAttribute ()) {
- do {
- dict.Add (reader.Prefix);
- dict.Add (reader.LocalName);
- dict.Add (reader.NamespaceURI);
- dict.Add (reader.Value);
- } while (reader.MoveToNextAttribute ());
- reader.MoveToElement ();
- }
- return true;
- }
- public override string ReadString ()
- {
- return reader.ReadString ();
- }
- public override string ReadInnerXml ()
- {
- return reader.ReadInnerXml ();
- }
- public override string ReadOuterXml ()
- {
- return reader.ReadOuterXml ();
- }
- public override string LookupNamespace (string prefix)
- {
- return reader.LookupNamespace (prefix);
- }
- public override void ResolveEntity ()
- {
- reader.ResolveEntity ();
- }
- public override bool ReadAttributeValue ()
- {
- return reader.ReadAttributeValue ();
- }
- #endregion
- }
- }
|