Export (0) Print
Expand All

XPathNavigator.ReplaceSelf Method (XmlReader)

Replaces the current node with the contents of the XmlReader object specified.

Namespace:  System.Xml.XPath
Assembly:  System.Xml (in System.Xml.dll)

public virtual void ReplaceSelf(
	XmlReader newNode


Type: System.Xml.XmlReader

An XmlReader object positioned on the XML data for the new node.


The XmlReader object is in an error state or closed.


The XmlReader object parameter is null.


The XPathNavigator is not positioned on an element, text, processing instruction, or comment node.


The XPathNavigator does not support editing.


The XML contents of the XmlReader object parameter is not well-formed.

The XPathNavigator is positioned on the new node on completion of the ReplaceSelf method and returns true. The XPathNavigator is not positioned on the new node after completion of the ReplaceSelf method when the XML input is Empty in which case the XPathNavigator is either positioned on the next sibling node or the parent node if there is no next sibling node to the replaced node and the ReplaceSelf returns false.

  • The ReplaceSelf method is valid only when the XPathNavigator is positioned on an element, text, processing instruction, or comment node.

  • If the XML data string is not well-formed than an exception is thrown and the result of this method is equivalent to calling DeleteSelf on the current node.

  • If the XML string contains multiple nodes, all nodes are added and the XPathNavigator is positioned on the first node in the series of nodes.

  • The ReplaceSelf method is not equivalent to the DeleteSelf method.

In the following example the price element in the contosoBooks.xml file is replaced by a new pages element.

XmlDocument document = new XmlDocument();
XPathNavigator navigator = document.CreateNavigator();

navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");
navigator.MoveToChild("price", "http://www.contoso.com/books");

XmlReader pages = XmlReader.Create(new StringReader("<pages xmlns=\"http://www.contoso.com/books\">100</pages>"));


Console.WriteLine("Position after delete: {0}", navigator.Name);

The example takes the contosoBooks.xml file as an input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

© 2014 Microsoft