diff options
author | Duncan Mak <duncan@mono-cvs.ximian.com> | 2002-06-26 05:13:05 +0400 |
---|---|---|
committer | Duncan Mak <duncan@mono-cvs.ximian.com> | 2002-06-26 05:13:05 +0400 |
commit | 55906fa7f2542395c6185c4a4d5bd0f12b76fd44 (patch) | |
tree | 3f49af251b58119a6aa7262be14c34ca4a0b7d50 /mcs/class/System.XML/System.Xml | |
parent | 74b72351826d88e36cb78ab5a97b1b28299d248e (diff) |
2002-06-26 Duncan Mak <duncan@ximian.com>
* XmlNodeReader.cs: Implementation of most of the properties, and
some of the related methods.
svn path=/trunk/mcs/; revision=5460
Diffstat (limited to 'mcs/class/System.XML/System.Xml')
-rw-r--r-- | mcs/class/System.XML/System.Xml/ChangeLog | 5 | ||||
-rwxr-xr-x | mcs/class/System.XML/System.Xml/XmlNodeReader.cs | 177 |
2 files changed, 129 insertions, 53 deletions
diff --git a/mcs/class/System.XML/System.Xml/ChangeLog b/mcs/class/System.XML/System.Xml/ChangeLog index 8e0760b7a9c..7e7d9b00d11 100644 --- a/mcs/class/System.XML/System.Xml/ChangeLog +++ b/mcs/class/System.XML/System.Xml/ChangeLog @@ -1,3 +1,8 @@ +2002-06-26 Duncan Mak <duncan@ximian.com> + + * XmlNodeReader.cs: Implementation of most of the properties, and + some of the related methods. + 2002-06-23 Piers Haken <piersh@friskit.com> * XmlDocumentNavigator.cs: implement Clone() diff --git a/mcs/class/System.XML/System.Xml/XmlNodeReader.cs b/mcs/class/System.XML/System.Xml/XmlNodeReader.cs index 064ac473d14..8bfd1013ad7 100755 --- a/mcs/class/System.XML/System.Xml/XmlNodeReader.cs +++ b/mcs/class/System.XML/System.Xml/XmlNodeReader.cs @@ -7,32 +7,38 @@ // (C) Ximian, Inc. // +using System; +using System.Collections; +using System.Xml; + namespace System.Xml { public class XmlNodeReader : XmlReader { #region Constructor - [MonoTODO] + XmlNode current; + ReadState state = ReadState.Initial; + public XmlNodeReader (XmlNode node) { + current = node; } #endregion #region Properties - [MonoTODO] public override int AttributeCount { - get { return 0; } + get { + return ((ICollection) current.Attributes).Count; + } } - [MonoTODO] public override string BaseURI { - get { return null; } + get { return current.BaseURI; } } - [MonoTODO] public override bool CanResolveEntity { get { return false; } } @@ -47,54 +53,99 @@ namespace System.Xml get { return false; } } - [MonoTODO] public override bool HasAttributes { - get { return false; } + get { + if (current.Attributes == null) + return false; + else + return true; + } } - [MonoTODO] public override bool HasValue { - get { return false; } + get { + if (current.NodeType == XmlNodeType.Element || + current.NodeType == XmlNodeType.EntityReference || + current.NodeType == XmlNodeType.Document || + current.NodeType == XmlNodeType.DocumentFragment || + current.NodeType == XmlNodeType.Notation || + current.NodeType == XmlNodeType.EndElement || + current.NodeType == XmlNodeType.EndEntity) + return false; + else + return true; + } + } [MonoTODO] public override bool IsDefault { - get { return false; } + get { + if (current.NodeType != XmlNodeType.Attribute) + return false; + else + return false; + } } - [MonoTODO] public override bool IsEmptyElement { - get { return false; } + get { + if (current.NodeType == XmlNodeType.Entity && + ((XmlEntity) current).Value.EndsWith ("/>")) + return true; + else + return false; + } } - [MonoTODO] public override string this [int i] { - get { return null; } + get { + if (i < 0 || i > AttributeCount) + throw new ArgumentOutOfRangeException ("i is out of range."); + + return current.Attributes [i].Value; + } } - [MonoTODO] public override string this [string name] { - get { return null; } + get { + string ret = current.Attributes [name].Value; + + if (ret == null) + return String.Empty; + else + return ret; + } } - [MonoTODO] public override string this [string name, string namespaceURI] { - get { return null; } + get { + string ret = current.Attributes [name].Value; + + if (ret == null) + return String.Empty; + else + return ret; + } } - [MonoTODO] public override string LocalName { - get { return null; } + get { + if (current is XmlCharacterData) + return String.Empty; + else + return current.LocalName; + } } - [MonoTODO] public override string Name { - get { return null; } + get { return current.Name; } } - [MonoTODO] public override string NamespaceURI { - get { return null; } + get { + return current.NamespaceURI; + } } [MonoTODO] @@ -102,33 +153,33 @@ namespace System.Xml get { return null; } } - [MonoTODO] public override XmlNodeType NodeType { - get { return 0; } + get { + return current.NodeType; + } } - [MonoTODO] public override string Prefix { - get { return null; } + get { + return current.Prefix; + } } public override char QuoteChar { get { return '"'; } } - [MonoTODO] public override ReadState ReadState { - get { return 0; } + get { return state; } } - [MonoTODO] public override string Value { - get { return null; } + get { return current.Value; } } [MonoTODO] public override string XmlLang { - get { return null; } + get { return String.Empty; } } [MonoTODO] @@ -139,27 +190,25 @@ namespace System.Xml #region Methods - [MonoTODO] public override void Close () { + current = null; + state = ReadState.Closed; } - [MonoTODO] public override string GetAttribute (int attributeIndex) { - return null; + return this [attributeIndex]; } - [MonoTODO] public override string GetAttribute (string name) { - return null; + return this [name]; } - [MonoTODO] public override string GetAttribute (string name, string namespaceURI) { - return null; + return this [name, namespaceURI]; } [MonoTODO] @@ -168,27 +217,38 @@ namespace System.Xml return null; } - [MonoTODO] public override void MoveToAttribute (int attributeIndex) { + if (attributeIndex < 0 || attributeIndex > AttributeCount) + throw new ArgumentOutOfRangeException (); + + state = ReadState.Interactive; + current = current.Attributes [attributeIndex]; } - [MonoTODO] public override bool MoveToAttribute (string name) { - return false; + if (GetAttribute (name) == null) + return false; + else + return true; } - [MonoTODO] public override bool MoveToAttribute (string name, string namespaceURI) { - return false; + if (GetAttribute (name, namespaceURI) == null) + return false; + else + return true; } - [MonoTODO] public override bool MoveToElement () { - return false; + if (current.NodeType == XmlNodeType.Attribute) { + current = ((XmlAttribute) current).OwnerElement; + return true; + } else + return false; } [MonoTODO] @@ -200,7 +260,10 @@ namespace System.Xml [MonoTODO] public override bool MoveToNextAttribute () { - return false; + if (current.NodeType != XmlNodeType.Attribute) + return MoveToFirstAttribute (); + else + return false; } [MonoTODO] @@ -215,16 +278,22 @@ namespace System.Xml return false; } - [MonoTODO] public override string ReadInnerXml () { - return null; + if (current.NodeType != XmlNodeType.Attribute && + current.NodeType != XmlNodeType.Element) + return String.Empty; + else + return current.InnerXml; } - [MonoTODO] public override string ReadOuterXml () { - return null; + if (current.NodeType != XmlNodeType.Attribute && + current.NodeType != XmlNodeType.Element) + return String.Empty; + else + return current.OuterXml; } [MonoTODO] @@ -236,6 +305,8 @@ namespace System.Xml [MonoTODO] public override void ResolveEntity () { + if (current.NodeType != XmlNodeType.EntityReference) + throw new InvalidOperationException ("The current node is not an Entity Reference"); } [MonoTODO] |