public virtual XmlNode GetNamedItem (string localName, string namespaceURI)
{
foreach (XmlNode node in nodeList) {
- if ((node.Name == localName)
- && (parent.NamespaceURI == namespaceURI))
+ if ((node.LocalName == localName)
+ && (node.NamespaceURI == namespaceURI))
return node;
}
{
foreach (XmlNode node in nodeList)
if (node.Name == name) {
+ if (node.IsReadOnly)
+ throw new InvalidOperationException ("Cannot remove. This node is read only: " + name);
nodeList.Remove (node);
return node;
}
-
return null;
}
public virtual XmlNode RemoveNamedItem (string localName, string namespaceURI)
{
foreach (XmlNode node in nodeList)
- if ((node.Name == localName)
- && (parent.NamespaceURI == namespaceURI)) {
+ if ((node.LocalName == localName)
+ && (node.NamespaceURI == namespaceURI)) {
nodeList.Remove (node);
return node;
}
}
public virtual XmlNode SetNamedItem (XmlNode node)
+ {
+ return SetNamedItem(node, -1);
+ }
+
+ internal XmlNode SetNamedItem (XmlNode node, int pos)
{
if (readOnly || (node.OwnerDocument != parent.OwnerDocument))
throw new ArgumentException ("Cannot add to NodeMap.");
-
+
foreach (XmlNode x in nodeList)
- if (x.Name == node.Name) {
+ if(x.LocalName == node.LocalName && x.NamespaceURI == node.NamespaceURI) {
nodeList.Remove (x);
nodeList.Add (node);
return x;
}
- nodeList.Add (node);
+ if(pos < 0)
+ nodeList.Add (node);
+ else
+ nodeList.Insert(pos, node);
return null;
}
+
+ internal ArrayList Nodes { get { return nodeList; } }
}
}