XPathNavigator.ReplaceRange replaces a range of sibling nodes
using System;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Xml.XPath;
public class MainClass{
public static void Main(){
XmlDocument document = new XmlDocument();
document.Load("domainBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);
manager.AddNamespace("bk", "http://www.domain.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", "Computer");
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);
}
}
Related examples in the same category