* XmlDeclaration.cs : Fixed ParseInput() more parse strictly.
[mono.git] / mcs / class / System.XML / System.Xml / XmlElement.cs
index e87edc9e9365749393cc721c4f3ec62479c72a82..4ccb1e7ba95a1003f5c8055e837089725a18649a 100644 (file)
@@ -60,13 +60,23 @@ namespace System.Xml
                        set { throw new NotImplementedException (); }
                }
 
-               [MonoTODO ("Setter.")]
+               [MonoTODO ("Setter is immature")]
                public override string InnerXml {
                        get {
                                // Not sure why this is an override.  Passing through for now.
                                return base.InnerXml;
                        }
-                       set { throw new NotImplementedException (); }
+                       set {
+                               // How to get xml:lang and xml:space? Create logic as ConstructNamespaceManager()?
+                               XmlNameTable nt = this.OwnerDocument.NameTable;
+                               XmlNamespaceManager nsmgr = this.ConstructNamespaceManager(); //new XmlNamespaceManager(nt);
+                               string lang = "";
+                               XmlSpace space = XmlSpace.Default;
+
+                               XmlParserContext ctx = new XmlParserContext(nt, nsmgr, lang, space);
+                               XmlTextReader xmlReader = new XmlTextReader(value, this.NodeType, ctx);
+                               this.ConstructDOM(xmlReader, this);
+                       }
                }
 
                [MonoTODO]
@@ -178,10 +188,22 @@ namespace System.Xml
                public virtual XmlNodeList GetElementsByTagName (string name)
                {
                        ArrayList nodeArrayList = new ArrayList ();
-                       this.searchNodesRecursively (this, name, String.Empty, nodeArrayList);
+                       this.searchNodesRecursively (this, name, nodeArrayList);
                        return new XmlNodeArrayList (nodeArrayList);
                }
 
+               private void searchNodesRecursively (XmlNode argNode, string argName, 
+                       ArrayList argArrayList)
+               {
+                       XmlNodeList xmlNodeList = argNode.ChildNodes;
+                       foreach (XmlNode node in xmlNodeList){
+                               if (node.Name.Equals (argName))
+                                       argArrayList.Add (node);
+                               else    
+                                       this.searchNodesRecursively (node, argName, argArrayList);
+                       }
+               }
+
                private void searchNodesRecursively (XmlNode argNode, string argName, string argNamespaceURI, 
                        ArrayList argArrayList)
                {