internal override XmlDiffViewNode Clone(bool bDeep) { var xmlDiffViewElement = new XmlDiffViewElement(this._localName, this._prefix, this._ns, this._ignorePrefixes); var diffViewAttribute = this._attributes; var refAttr = (XmlDiffViewAttribute)null; for (; diffViewAttribute != null; diffViewAttribute = (XmlDiffViewAttribute)diffViewAttribute._nextSibbling) { var newAttr = (XmlDiffViewAttribute)diffViewAttribute.Clone(true); xmlDiffViewElement.InsertAttributeAfter(newAttr, refAttr); refAttr = newAttr; } if (!bDeep) { return((XmlDiffViewNode)xmlDiffViewElement); } var xmlDiffViewNode = this._childNodes; var referenceChild = (XmlDiffViewNode)null; for (; xmlDiffViewNode != null; xmlDiffViewNode = xmlDiffViewNode._nextSibbling) { var newChild = xmlDiffViewNode.Clone(true); xmlDiffViewElement.InsertChildAfter(newChild, referenceChild, false); referenceChild = newChild; } return((XmlDiffViewNode)xmlDiffViewElement); }
private XmlDiffViewNode ImportNode(XmlNode node) { XmlDiffViewNode newNode = null; switch (node.NodeType) { case XmlNodeType.Element: XmlElement el = (XmlElement)node; XmlDiffViewElement newElement = new XmlDiffViewElement(el.LocalName, el.Prefix, el.NamespaceURI, _bIgnorePrefixes); // attributes IEnumerator attributes = node.Attributes.GetEnumerator(); XmlDiffViewAttribute lastNewAttr = null; while (attributes.MoveNext()) { XmlAttribute at = (XmlAttribute)attributes.Current; XmlDiffViewAttribute newAttr = new XmlDiffViewAttribute(at.LocalName, at.Prefix, at.NamespaceURI, at.Value); newElement.InsertAttributeAfter(newAttr, lastNewAttr); lastNewAttr = newAttr; } // children IEnumerator childNodes = node.ChildNodes.GetEnumerator(); XmlDiffViewNode lastNewChildNode = null; while (childNodes.MoveNext()) { XmlDiffViewNode newChildNode = ImportNode((XmlNode)childNodes.Current); newElement.InsertChildAfter(newChildNode, lastNewChildNode, false); lastNewChildNode = newChildNode; } newNode = newElement; break; case XmlNodeType.Text: case XmlNodeType.CDATA: case XmlNodeType.Comment: newNode = new XmlDiffViewCharData(node.Value, node.NodeType); break; case XmlNodeType.ProcessingInstruction: newNode = new XmlDiffViewPI(node.Name, node.Value); break; case XmlNodeType.EntityReference: newNode = new XmlDiffViewER(node.Name); break; default: Debug.Assert(false, "Invalid node type."); break; } Debug.Assert(newNode != null); return(newNode); }
private XmlDiffViewNode ImportNode(XmlNode node) { XmlDiffViewNode xmlDiffViewNode = null; switch (node.NodeType) { case XmlNodeType.Element: var xmlElement = (XmlElement)node; var xmlDiffViewElement = new XmlDiffViewElement(xmlElement.LocalName, xmlElement.Prefix, xmlElement.NamespaceURI, this._bIgnorePrefixes); var enumerator1 = node.Attributes.GetEnumerator(); XmlDiffViewAttribute refAttr = null; while (enumerator1.MoveNext()) { var current = (XmlAttribute)enumerator1.Current; var newAttr = new XmlDiffViewAttribute(current.LocalName, current.Prefix, current.NamespaceURI, current.Value); xmlDiffViewElement.InsertAttributeAfter(newAttr, refAttr); refAttr = newAttr; } var enumerator2 = node.ChildNodes.GetEnumerator(); XmlDiffViewNode referenceChild = null; while (enumerator2.MoveNext()) { var newChild = this.ImportNode((XmlNode)enumerator2.Current); xmlDiffViewElement.InsertChildAfter(newChild, referenceChild, false); referenceChild = newChild; } xmlDiffViewNode = xmlDiffViewElement; break; case XmlNodeType.Text: case XmlNodeType.CDATA: case XmlNodeType.Comment: xmlDiffViewNode = new XmlDiffViewCharData(node.Value, node.NodeType); break; case XmlNodeType.EntityReference: xmlDiffViewNode = new XmlDiffViewER(node.Name); break; case XmlNodeType.ProcessingInstruction: xmlDiffViewNode = new XmlDiffViewPI(node.Name, node.Value); break; default: Debug.Assert(false, "Invalid node type."); break; } Debug.Assert(xmlDiffViewNode != null); return(xmlDiffViewNode); }
/// <summary> /// Creates a complete copy of the current node. /// </summary> /// <param name="deep">has child nodes</param> /// <returns>A copy of the current node</returns> internal override XmlDiffViewNode Clone(bool deep) { XmlDiffViewElement newElement = new XmlDiffViewElement( this.LocalName, this.Prefix, this.NamespaceUri, this.ignorePrefixes); // attributes { XmlDiffViewAttribute curAttr = this.Attributes; XmlDiffViewAttribute lastNewAtt = null; while (curAttr != null) { XmlDiffViewAttribute newAttr = (XmlDiffViewAttribute)curAttr.Clone(true); newElement.InsertAttributeAfter(newAttr, lastNewAtt); lastNewAtt = newAttr; curAttr = (XmlDiffViewAttribute)curAttr.NextSibbling; } } if (!deep) { return(newElement); } // child nodes { XmlDiffViewNode curChild = ChildNodes; XmlDiffViewNode lastNewChild = null; while (curChild != null) { XmlDiffViewNode newChild = curChild.Clone(true); newElement.InsertChildAfter(newChild, lastNewChild, false); lastNewChild = newChild; curChild = curChild.NextSibbling; } } return(newElement); }
internal override XmlDiffViewNode Clone(bool bDeep) { XmlDiffViewElement newElement = new XmlDiffViewElement(_localName, _prefix, _ns, _ignorePrefixes); // attributes { XmlDiffViewAttribute curAttr = _attributes; XmlDiffViewAttribute lastNewAtt = null; while (curAttr != null) { XmlDiffViewAttribute newAttr = (XmlDiffViewAttribute)curAttr.Clone(true); newElement.InsertAttributeAfter(newAttr, lastNewAtt); lastNewAtt = newAttr; curAttr = (XmlDiffViewAttribute)curAttr._nextSibbling; } } if (!bDeep) { return(newElement); } // child nodes { XmlDiffViewNode curChild = _childNodes; XmlDiffViewNode lastNewChild = null; while (curChild != null) { XmlDiffViewNode newChild = curChild.Clone(true); newElement.InsertChildAfter(newChild, lastNewChild, false); lastNewChild = newChild; curChild = curChild._nextSibbling; } } return(newElement); }
/// <summary> /// Creates a complete copy of the current node. /// </summary> /// <param name="deep">has child nodes</param> /// <returns>A copy of the current node</returns> internal override XmlDiffViewNode Clone(bool deep) { XmlDiffViewElement newElement = new XmlDiffViewElement( this.LocalName, this.Prefix, this.NamespaceUri, this.ignorePrefixes); // attributes { XmlDiffViewAttribute curAttr = this.Attributes; XmlDiffViewAttribute lastNewAtt = null; while (curAttr != null) { XmlDiffViewAttribute newAttr = (XmlDiffViewAttribute)curAttr.Clone(true); newElement.InsertAttributeAfter(newAttr, lastNewAtt); lastNewAtt = newAttr; curAttr = (XmlDiffViewAttribute)curAttr.NextSibbling; } } if (!deep) { return newElement; } // child nodes { XmlDiffViewNode curChild = ChildNodes; XmlDiffViewNode lastNewChild = null; while (curChild != null) { XmlDiffViewNode newChild = curChild.Clone(true); newElement.InsertChildAfter(newChild, lastNewChild, false); lastNewChild = newChild; curChild = curChild.NextSibbling; } } return newElement; }
internal override XmlDiffViewNode Clone( bool bDeep ) { XmlDiffViewElement newElement = new XmlDiffViewElement( _localName, _prefix, _ns, _ignorePrefixes ); // attributes { XmlDiffViewAttribute curAttr = _attributes; XmlDiffViewAttribute lastNewAtt = null; while ( curAttr != null ) { XmlDiffViewAttribute newAttr = (XmlDiffViewAttribute)curAttr.Clone( true ); newElement.InsertAttributeAfter( newAttr, lastNewAtt ); lastNewAtt = newAttr; curAttr = (XmlDiffViewAttribute)curAttr._nextSibbling; } } if ( !bDeep ) return newElement; // child nodes { XmlDiffViewNode curChild = _childNodes; XmlDiffViewNode lastNewChild = null; while ( curChild != null ) { XmlDiffViewNode newChild = curChild.Clone( true ); newElement.InsertChildAfter( newChild, lastNewChild, false ); lastNewChild = newChild; curChild = curChild._nextSibbling; } } return newElement; }
/// <summary> /// Generate a new node /// </summary> /// <param name="node">node to clone</param> /// <returns>the new node</returns> private XmlDiffViewNode ImportNode(XmlNode node) { XmlDiffViewNode newNode = null; switch (node.NodeType) { case XmlNodeType.Element: XmlElement el = (XmlElement)node; XmlDiffViewElement newElement = new XmlDiffViewElement( el.LocalName, el.Prefix, el.NamespaceURI, this.ignorePrefixes); // attributes IEnumerator attributes = node.Attributes.GetEnumerator(); XmlDiffViewAttribute lastNewAttr = null; while (attributes.MoveNext()) { XmlAttribute at = (XmlAttribute)attributes.Current; XmlDiffViewAttribute newAttr = new XmlDiffViewAttribute( at.LocalName, at.Prefix, at.NamespaceURI, at.Value); newElement.InsertAttributeAfter(newAttr, lastNewAttr); lastNewAttr = newAttr; } // children IEnumerator childNodes = node.ChildNodes.GetEnumerator(); XmlDiffViewNode lastNewChildNode = null; while (childNodes.MoveNext()) { XmlDiffViewNode newChildNode = this.ImportNode( (XmlNode)childNodes.Current); newElement.InsertChildAfter( newChildNode, lastNewChildNode, false); lastNewChildNode = newChildNode; } newNode = newElement; break; case XmlNodeType.Text: case XmlNodeType.CDATA: case XmlNodeType.Comment: newNode = new XmlDiffViewCharData( node.Value, node.NodeType); break; case XmlNodeType.ProcessingInstruction: newNode = new XmlDiffViewPI(node.Name, node.Value); break; case XmlNodeType.EntityReference: Debug.Assert(false, "XmlDiffViewER was thought to be dead code"); //// newNode = new XmlDiffViewER(node.Name); break; default: Debug.Assert(false, "Invalid node type."); break; } Debug.Assert(newNode != null); return newNode; }