touchups on XmlTextWriter attribute writing.
[mono.git] / mcs / class / System.XML / System.Xml / XmlAttribute.cs
index aabfba4451b8e9c22f53b0be910becdf3c846c9f..0db650d74b0272bb1927b2bc25ee97a07c315dda 100644 (file)
@@ -15,11 +15,11 @@ namespace System.Xml
        {
                #region Fields
 
+               private XmlElement ownerElement;
+               private XmlLinkedNode lastChild;
                private string localName;
                private string namespaceURI;
                private string prefix;
-               private XmlElement ownerElement;
-               private string data;
 
                #endregion
 
@@ -105,11 +105,6 @@ namespace System.Xml
                        }
                }
 
-               internal void SetOwnerElement (XmlElement ownerElement)
-               {
-                       this.ownerElement = ownerElement;
-               }
-
                [MonoTODO]
                public override XmlNode ParentNode {
                        get {
@@ -132,11 +127,18 @@ namespace System.Xml
 
                public override string Value {
                        get {
-                               return data;
+                               XmlNode firstChild = FirstChild;
+                               if (firstChild == null)
+                                       return String.Empty;
+                               return firstChild.Value;
                        }
 
                        set {
-                               data = value;
+                               XmlNode firstChild = FirstChild;
+                               if (firstChild == null)
+                                       AppendChild (OwnerDocument.CreateTextNode (value));
+                               else
+                                       firstChild.Value = value;
                        }
                }
 
@@ -144,24 +146,43 @@ namespace System.Xml
 
                #region Methods
 
-               [MonoTODO]
                public override XmlNode CloneNode (bool deep)
                {
-                       throw new NotImplementedException ();
+                       XmlNode node = new XmlAttribute (prefix, localName, namespaceURI,
+                                                        OwnerDocument);
+                       if (deep) {
+                               while ((node != null) && (node.HasChildNodes)) {
+                                       AppendChild (node.NextSibling.CloneNode (true));
+                                       node = node.NextSibling;
+                               }
+                       }
+
+                       return node;
+               }
+
+               internal void SetOwnerElement (XmlElement ownerElement)
+               {
+                       this.ownerElement = ownerElement;
                }
 
                [MonoTODO]
-               public override void WriteContentTo(XmlWriter w)
+               public override void WriteContentTo (XmlWriter w)
                {
                        throw new NotImplementedException ();
                }
 
                [MonoTODO]
-               public override void WriteTo(XmlWriter w)
+               public override void WriteTo (XmlWriter w)
                {
                        throw new NotImplementedException ();
                }
 
                #endregion
+
+               internal override XmlLinkedNode LastLinkedChild {
+                       get { return lastChild; }
+
+                       set { lastChild = value; }
+               }
        }
 }