XPathNavigator.ReplaceRange Method (XPathNavigator)

 

Replaces a range of sibling nodes from the current node to the node specified.

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

public virtual XmlWriter ReplaceRange(
	XPathNavigator lastSiblingToReplace
)

Parameters

lastSiblingToReplace
Type: System.Xml.XPath.XPathNavigator

An XPathNavigator positioned on the last sibling node in the range to replace.

Return Value

Type: System.Xml.XmlWriter

An XmlWriter object used to specify the replacement range.

Exception Condition
ArgumentNullException

The XPathNavigator specified is null.

NotSupportedException

The XPathNavigator does not support editing.

InvalidOperationException

The last node to replace specified is not a valid sibling node of the current node.

The ReplaceRange method replaces a range of sibling nodes from the current node the XPathNavigator is positioned on (inclusive) to the node specified by the XPathNavigator parameter (inclusive).

System_CAPS_noteNote

The replacement range is not inserted until the Close method of the XmlWriter object is called.

In the following example, the first and second book elements of the contosoBooks.xml file are replaced with a new empty book element using the ReplaceRange method.

XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");

XPathNavigator first = navigator.SelectSingleNode("/bk:bookstore/bk:book[1]", manager);
XPathNavigator last = navigator.SelectSingleNode("/bk:bookstore/bk:book[2]", manager);

navigator.MoveTo(first);
XmlWriter newRange = navigator.ReplaceRange(last);
newRange.WriteStartElement("book");
newRange.WriteAttributeString("genre", "");
newRange.WriteAttributeString("publicationdate", "2005-04-07");
newRange.WriteAttributeString("ISBN", "0");
newRange.WriteStartElement("title");
newRange.WriteString("New Book");
newRange.WriteEndElement();
newRange.WriteStartElement("author");
newRange.WriteStartElement("first-name");
newRange.WriteString("First Name");
newRange.WriteEndElement();
newRange.WriteStartElement("last-name");
newRange.WriteString("Last Name");
newRange.WriteEndElement();
newRange.WriteEndElement();
newRange.WriteElementString("price", "$0.00");
newRange.WriteEndElement();
newRange.Close();
Console.WriteLine(navigator.OuterXml);

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>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

.NET Framework
Available since 2.0
Silverlight
Available since 4.0
Return to top
Show: