XPathNavigator.ReplaceRange(XPathNavigator) 方法

定义

替换从当前节点到指定节点之间的一组同级节点。

public:
 virtual System::Xml::XmlWriter ^ ReplaceRange(System::Xml::XPath::XPathNavigator ^ lastSiblingToReplace);
public virtual System.Xml.XmlWriter ReplaceRange (System.Xml.XPath.XPathNavigator lastSiblingToReplace);
abstract member ReplaceRange : System.Xml.XPath.XPathNavigator -> System.Xml.XmlWriter
override this.ReplaceRange : System.Xml.XPath.XPathNavigator -> System.Xml.XmlWriter
Public Overridable Function ReplaceRange (lastSiblingToReplace As XPathNavigator) As XmlWriter

参数

lastSiblingToReplace
XPathNavigator

一个 XPathNavigator,它定位在要替换的范围中的最后一个同级节点上。

返回

XmlWriter

一个 XmlWriter 对象,该对象用于指定替换范围。

例外

指定的 XPathNavigatornull

指定的要替换的最后一个节点不是当前节点的有效同级节点。

示例

在以下示例中,使用该方法将文件的第一个和第二 book 个元素 contosoBooks.xml 替换为新的空 book 元素 ReplaceRange

XmlDocument^ document = gcnew XmlDocument();
document->Load("contosoBooks.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XmlNamespaceManager^ manager = gcnew 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);
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);
Dim document As XmlDocument = New XmlDocument()
document.Load("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim manager As XmlNamespaceManager = New XmlNamespaceManager(document.NameTable)
manager.AddNamespace("bk", "http://www.contoso.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)

该示例使用 contosoBooks.xml 文件作为输入。

<?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>  

注解

此方法 ReplaceRange 替换当前节点上的同级节点范围,该 XPathNavigator 节点位于 (非独占) (非独占) 指定的 XPathNavigator 节点。

备注

在调用对象的方法XmlWriter之前Close,不会插入替换范围。

适用于