Mega Code Archive

 
Categories / C# / XML
 

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);    } }