XPathNavigator.ReplaceRange (System.Xml.XPath) replaces a range of sibling nodes
Imports System Imports System.Xml Imports System.Xml.XPath Public Class MainClass Public Shared Sub Main() Dim document As XmlDocument = New XmlDocument() document.Load("domainBooks.xml") Dim navigator As XPathNavigator = document.CreateNavigator() Dim manager As XmlNamespaceManager = New XmlNamespaceManager(document.NameTable) manager.AddNamespace("bk", "http://www.domain.com/books") Dim first As XPathNavigator = navigator.SelectSingleNode("/bk:bookstore/bk:book[1]", manager) Dim last As XPathNavigator = navigator.SelectSingleNode("/bk:bookstore/bk:book[2]", manager) navigator.MoveTo(first) Dim newRange As XmlWriter = 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) End Sub End Class