コード例 #1
0
        public void RejectChanges()
        {
            for (int i = changes.Count - 1; i >= 0; i--)
            {
                Insertion ins = changes [i] as Insertion;
                if (ins != null)
                {
                    ins.ParentNode.RemoveChild(ins.InsertedNode);
                    continue;
                }

                Removal rem = changes [i] as Removal;
                if (rem != null)
                {
                    if (rem.RemovedNode.NodeType == XmlNodeType.Attribute)
                    {
                        XmlElement el = (XmlElement)rem.OwnerNode;
                        el.SetAttributeNode((XmlAttribute)rem.RemovedNode);
                    }
                    else
                    {
                        rem.OwnerNode.InsertBefore(rem.RemovedNode, rem.NextSibling);
                    }
                    continue;
                }
                AttributeUpdate au = changes [i] as AttributeUpdate;
                if (au != null)
                {
                    if (au.OldAttribute != null)
                    {
                        au.Element.SetAttributeNode(au.OldAttribute);
                    }
                    else
                    {
                        au.Element.RemoveAttributeNode(au.NewAttribute);
                    }
                    continue;
                }
            }
            changes.Clear();
        }
コード例 #2
0
        internal bool DeleteNode(XmlNode node)
        {
            Removal rem = new Removal();

            if (node.NodeType == XmlNodeType.Attribute)
            {
                XmlAttribute attr = node as XmlAttribute;
                rem.OwnerNode   = attr.OwnerElement;
                rem.RemovedNode = node;
                attr.OwnerElement.RemoveAttributeNode(attr);
                return(false);
            }
            else
            {
                rem.OwnerNode   = node.ParentNode;
                rem.NextSibling = node.NextSibling;
                rem.RemovedNode = node;
                node.ParentNode.RemoveChild(node);
                return(rem.NextSibling != null);
            }
        }
コード例 #3
0
		internal bool DeleteNode (XmlNode node)
		{
			Removal rem = new Removal ();
			if (node.NodeType == XmlNodeType.Attribute) {
				XmlAttribute attr = node as XmlAttribute;
				rem.OwnerNode = attr.OwnerElement;
				rem.RemovedNode = node;
				attr.OwnerElement.RemoveAttributeNode (attr);
				return false;
			} else {
				rem.OwnerNode = node.ParentNode;
				rem.NextSibling = node.NextSibling;
				rem.RemovedNode = node;
				node.ParentNode.RemoveChild (node);
				return rem.NextSibling != null;
			}
		}