{
public class XmlNamedNodeMap : IEnumerable
{
- private XmlNode parent;
- private ArrayList nodeList;
+ XmlNode parent;
+ ArrayList nodeList;
+ bool readOnly = false;
internal XmlNamedNodeMap (XmlNode parent)
{
get { return nodeList.Count; }
}
- [MonoTODO]
public virtual IEnumerator GetEnumerator ()
{
- throw new NotImplementedException ();
+ return nodeList.GetEnumerator ();
}
public virtual XmlNode GetNamedItem (string name)
return null;
}
- [MonoTODO]
public virtual XmlNode GetNamedItem (string localName, string namespaceURI)
{
- throw new NotImplementedException ();
+ foreach (XmlNode node in nodeList) {
+ if ((node.Name == localName)
+ && (parent.NamespaceURI == namespaceURI))
+ return node;
+ }
+
+ return null;
}
public virtual XmlNode Item (int index)
return (XmlNode) nodeList [index];
}
- [MonoTODO]
public virtual XmlNode RemoveNamedItem (string name)
- {
- throw new NotImplementedException ();
+ {
+ foreach (XmlNode node in nodeList)
+ if (node.Name == name) {
+ nodeList.Remove (node);
+ return node;
+ }
+
+ return null;
}
- [MonoTODO]
public virtual XmlNode RemoveNamedItem (string localName, string namespaceURI)
{
- throw new NotImplementedException ();
+ foreach (XmlNode node in nodeList)
+ if ((node.Name == localName)
+ && (parent.NamespaceURI == namespaceURI)) {
+ nodeList.Remove (node);
+ return node;
+ }
+
+ return null;
}
- [MonoTODO]
public virtual XmlNode SetNamedItem (XmlNode node)
{
+ if (readOnly || (node.OwnerDocument != parent.OwnerDocument))
+ throw new ArgumentException ("Cannot add to NodeMap.");
+
+ foreach (XmlNode x in nodeList)
+ if (x.Name == node.Name) {
+ nodeList.Remove (x);
+ nodeList.Add (x);
+ return x;
+ }
+
nodeList.Add (node);
- return node;
+ return null;
}
}
}