/// <summary> /// Adds the specified node to the end of the list of children of this node. /// </summary> /// <param name="newChild">The node to add. May not be null.</param> /// <returns>The node added.</returns> public HtmlNode AppendChild(HtmlNode newChild) { if (newChild == null) { throw new ArgumentNullException("newChild"); } ChildNodes.Append(newChild); _ownerdocument.SetIdForNode(newChild, newChild.GetId()); SetChanged(); return newChild; }
/// <summary> /// Removes the specified child node. /// </summary> /// <param name="oldChild">The node being removed. May not be <c>null</c>.</param> /// <returns>The node removed.</returns> public HtmlNode RemoveChild(HtmlNode oldChild) { if (oldChild == null) { throw new ArgumentNullException("oldChild"); } int index = -1; if (_childnodes != null) { index = _childnodes[oldChild]; } if (index == -1) { throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild); } if (_childnodes != null) _childnodes.Remove(index); _ownerdocument.SetIdForNode(null, oldChild.GetId()); SetChanged(); return oldChild; }
/// <summary> /// Replaces the child node oldChild with newChild node. /// </summary> /// <param name="newChild">The new node to put in the child list.</param> /// <param name="oldChild">The node being replaced in the list.</param> /// <returns>The node replaced.</returns> public HtmlNode ReplaceChild(HtmlNode newChild, HtmlNode oldChild) { if (newChild == null) { return RemoveChild(oldChild); } if (oldChild == null) { return AppendChild(newChild); } int index = -1; if (_childnodes != null) { index = _childnodes[oldChild]; } if (index == -1) { throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild); } if (_childnodes != null) _childnodes.Replace(index, newChild); _ownerdocument.SetIdForNode(null, oldChild.GetId()); _ownerdocument.SetIdForNode(newChild, newChild.GetId()); SetChanged(); return newChild; }
/// <summary> /// Inserts the specified node immediately before the specified reference node. /// </summary> /// <param name="newChild">The node to insert. May not be <c>null</c>.</param> /// <param name="refChild">The node that is the reference node. The newChild is placed before this node.</param> /// <returns>The node being inserted.</returns> public HtmlNode InsertBefore(HtmlNode newChild, HtmlNode refChild) { if (newChild == null) { throw new ArgumentNullException("newChild"); } if (refChild == null) { return AppendChild(newChild); } if (newChild == refChild) { return newChild; } int index = -1; if (_childnodes != null) { index = _childnodes[refChild]; } if (index == -1) { throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild); } if (_childnodes != null) _childnodes.Insert(index, newChild); _ownerdocument.SetIdForNode(newChild, newChild.GetId()); SetChanged(); return newChild; }