X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.XML%2FSystem.Xml%2FXmlElement.cs;h=67f1070bc967b6445789804a9f323206b174d799;hb=5a5f87e557cd1b2534c14236c4f3f9d99d4c7d15;hp=2e64a7ecec1d374e903d078849923b55683bad18;hpb=60845347984eeeaa22668fbe99e6636f5901531f;p=mono.git
diff --git a/mcs/class/System.XML/System.Xml/XmlElement.cs b/mcs/class/System.XML/System.Xml/XmlElement.cs
index 2e64a7ecec1..67f1070bc96 100644
--- a/mcs/class/System.XML/System.Xml/XmlElement.cs
+++ b/mcs/class/System.XML/System.Xml/XmlElement.cs
@@ -1,131 +1,289 @@
-// -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
-//
-// System.Xml.XmlElement
-//
-// Author:
-// Daniel Weber (daniel-weber@austin.rr.com)
-//
-// (C) 2001 Daniel Weber
-using System;
-
-namespace System.Xml
-{
- public class XmlElement : XmlLinkedNode
- {
- // Private/Protected internal data structures
- //===========================================================================
- private XmlAttributeCollection _attributes;
-
- // Public Properties
- //===========================================================================
-
- ///
- /// Return the XmlAttributeCollection on the Element
- ///
- public override XmlAttributeCollection Attributes
- {
- get
- {
- // TODO - implement Attributes
- return _attributes;
- }
- }
-
- // Implement abstract methods of XmlNode
- //=====================================================================
- ///
- /// Remove all children and attributes. If
- ///
- public override void RemoveAll()
- {
- // Remove all child nodes
- base.RemoveAll();
-
- // Remove all attributes
- _attributes.RemoveAll();
-
- // If we have any default attributes, add them back in with the
- // appropriate namespace, baseURI, name, localName
- // TODO - implement adding default attributes back in XmlElement.RemoveAll()
- }
-
- ///
- /// Return a clone of the node
- ///
- /// Make copy of all children
- /// Cloned node
- public override XmlNode CloneNode( bool deep)
- {
- // TODO - implement CloneNode()
- throw new NotImplementedException();
- }
-
- ///
- /// Saves all children of the current node to the passed writer
- ///
- ///
- public override void WriteContentTo(XmlWriter w)
- {
- // TODO - implement WriteContentsTo(XmlWriter)
- throw new NotImplementedException();
- }
-
- ///
- /// Saves the current node to writer w
- ///
- ///
- public override void WriteTo(XmlWriter w)
- {
- // TODO - implement WriteTo(XmlWriter)
- throw new NotImplementedException();
- }
-
- ///
- /// Returns the local name of the node with qualifiers removed
- /// LocalName of ns:elementName = "elementName"
- ///
- public override string LocalName
- {
- get
- {
- // TODO - implement LocalName
- throw new NotImplementedException();
- }
- }
-
-
- ///
- /// Get the qualified node name
- /// derived classes must implement as behavior varies
- /// by tag type.
- ///
- public override string Name
- {
- get
- {
- // TODO - implement Name
- throw new NotImplementedException();
- }
- }
-
- public override XmlNodeType NodeType
- {
- get
- {
- return XmlNodeType.Element;
- }
- }
-
-
- // ============= Internal calls =============================================
-
- // Constructors
- // ==========================================================================
- internal XmlElement( XmlDocument aOwnerDoc ) : base(aOwnerDoc)
- {
- _attributes = new XmlAttributeCollection(aOwnerDoc, this, null);
- }
-
-
- } // class
- } //namespace
+//
+// System.Xml.XmlAttribute
+//
+// Author:
+// Jason Diamond (jason@injektilo.org)
+//
+// (C) 2002 Jason Diamond http://injektilo.org/
+//
+
+using System;
+
+namespace System.Xml
+{
+ public class XmlElement : XmlLinkedNode
+ {
+ #region Fields
+
+ private XmlAttributeCollection attributes;
+ private XmlLinkedNode lastLinkedChild;
+ private string localName;
+ private string namespaceURI;
+ private string prefix;
+
+ #endregion
+
+ #region Constructor
+
+ protected internal XmlElement (
+ string prefix,
+ string localName,
+ string namespaceURI,
+ XmlDocument doc) : base (doc)
+ {
+ this.prefix = prefix;
+ this.localName = localName;
+ this.namespaceURI = namespaceURI;
+
+ attributes = new XmlAttributeCollection (this);
+ }
+
+ #endregion
+
+ #region Properties
+
+ public override XmlAttributeCollection Attributes {
+ get { return attributes; }
+ }
+
+ public virtual bool HasAttributes {
+ get { return attributes.Count > 0; }
+ }
+
+ [MonoTODO ("Setter.")]
+ public override string InnerXml {
+ get {
+ // Not sure why this is an override. Passing through for now.
+ return base.InnerXml;
+ }
+ set { throw new NotImplementedException (); }
+ }
+
+ [MonoTODO]
+ public bool IsEmpty {
+ get { throw new NotImplementedException (); }
+
+ set { throw new NotImplementedException (); }
+ }
+
+ internal override XmlLinkedNode LastLinkedChild {
+ get { return lastLinkedChild; }
+
+ set { lastLinkedChild = value; }
+ }
+
+ public override string LocalName {
+ get { return localName; }
+ }
+
+ public override string Name {
+ get {
+ return prefix != String.Empty ? prefix + ":" + localName : localName;
+ }
+ }
+
+ public override string NamespaceURI {
+ get { return namespaceURI; }
+ }
+
+ [MonoTODO]
+ public override XmlNode NextSibling {
+ get {
+ return base.NextSibling;
+ }
+ }
+
+ public override XmlNodeType NodeType {
+ get {
+ return XmlNodeType.Element;
+ }
+ }
+
+ [MonoTODO]
+ public override XmlDocument OwnerDocument {
+ get {
+ return base.OwnerDocument;
+ }
+ }
+
+ public override string Prefix {
+ get {
+ return prefix;
+ }
+ }
+
+ #endregion
+
+ #region Methods
+
+ [MonoTODO]
+ public override XmlNode CloneNode (bool deep)
+ {
+ XmlNode node = new XmlElement (prefix, localName, namespaceURI,
+ OwnerDocument);
+
+ for (int i = 0; i < node.Attributes.Count; i++)
+ node.AppendChild (node.Attributes [i].CloneNode (false));
+
+ if (deep) {
+ while ((node != null) && (node.HasChildNodes)) {
+ AppendChild (node.NextSibling.CloneNode (true));
+ node = node.NextSibling;
+ }
+ } // shallow cloning
+
+ //
+ // Reminder: Also look into Default attributes.
+ //
+ return node;
+ }
+
+ [MonoTODO]
+ public virtual string GetAttribute (string name)
+ {
+ XmlNode attributeNode = Attributes.GetNamedItem (name);
+ return attributeNode != null ? attributeNode.Value : String.Empty;
+ }
+
+ [MonoTODO]
+ public virtual string GetAttribute (string localName, string namespaceURI)
+ {
+ XmlNode attributeNode = Attributes.GetNamedItem (localName, namespaceURI);
+ return attributeNode != null ? attributeNode.Value : String.Empty;
+ }
+
+ [MonoTODO]
+ public virtual XmlAttribute GetAttributeNode (string name)
+ {
+ XmlNode attributeNode = Attributes.GetNamedItem (name);
+ return attributeNode != null ? attributeNode as XmlAttribute : null;
+ }
+
+ [MonoTODO]
+ public virtual XmlAttribute GetAttributeNode (string localName, string namespaceURI)
+ {
+ XmlNode attributeNode = Attributes.GetNamedItem (localName, namespaceURI);
+ return attributeNode != null ? attributeNode as XmlAttribute : null;
+ }
+
+ [MonoTODO]
+ public virtual XmlNodeList GetElementsByTagName (string name)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual XmlNodeList GetElementsByTagName (string localName, string namespaceURI)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual bool HasAttribute (string name)
+ {
+ XmlNode attributeNode = Attributes.GetNamedItem (name);
+ return attributeNode != null;
+ }
+
+ [MonoTODO]
+ public virtual bool HasAttribute (string localName, string namespaceURI)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO ("Don't remove default attributes.")]
+ public override void RemoveAll ()
+ {
+ // Remove the child nodes.
+ base.RemoveAll ();
+
+ // Remove all attributes.
+ attributes.RemoveAll ();
+ }
+
+ [MonoTODO]
+ public virtual void RemoveAllAttributes ()
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual void RemoveAttribute (string name)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual void RemoveAttribute (string localName, string namespaceURI)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual XmlNode RemoveAttributeAt (int i)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual XmlAttribute RemoveAttributeNode (XmlAttribute oldAttr)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual XmlAttribute RemoveAttributeNode (string localName, string namespaceURI)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual void SetAttribute (string name, string value)
+ {
+ XmlAttribute attribute = OwnerDocument.CreateAttribute (name);
+ attribute.SetParentNode (this);
+ attribute.Value = value;
+ Attributes.SetNamedItem (attribute);
+ }
+
+ [MonoTODO]
+ public virtual string SetAttribute (string localName, string namespaceURI, string value)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO]
+ public virtual XmlAttribute SetAttributeNode (XmlAttribute newAttr)
+ {
+ newAttr.SetParentNode(this);
+ XmlNode oldAttr = Attributes.SetNamedItem(newAttr);
+ return oldAttr != null ? oldAttr as XmlAttribute : null;
+ }
+
+ [MonoTODO]
+ public virtual XmlAttribute SetAttributeNode (string localName, string namespaceURI)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override void WriteContentTo (XmlWriter w)
+ {
+ foreach(XmlNode childNode in ChildNodes)
+ childNode.WriteTo(w);
+ }
+
+ public override void WriteTo (XmlWriter w)
+ {
+ w.WriteStartElement(Prefix, LocalName, NamespaceURI);
+
+ foreach(XmlNode attributeNode in Attributes)
+ attributeNode.WriteTo(w);
+
+ WriteContentTo(w);
+
+ w.WriteEndElement();
+ }
+
+ #endregion
+ }
+}