Freigeben über


XPathNavigator.Clone-Methode

Erstellt beim Überschreiben in einer abgeleiteten Klasse einen neuen XPathNavigator, der auf demselben Knoten wie dieser XPathNavigator positioniert ist.

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

Syntax

'Declaration
Public MustOverride Function Clone As XPathNavigator
'Usage
Dim instance As XPathNavigator
Dim returnValue As XPathNavigator

returnValue = instance.Clone
public abstract XPathNavigator Clone ()
public:
virtual XPathNavigator^ Clone () abstract
public abstract XPathNavigator Clone ()
public abstract function Clone () : XPathNavigator

Rückgabewert

Ein neuer XPathNavigator, der auf demselben Knoten wie dieser XPathNavigator positioniert ist.

Hinweise

Die Clone-Methode ist besonders in Verbindung mit dem XPathNodeIterator nützlich. Ein XPathNodeIterator wird zum Durchlaufen einer ausgewählten Knotengruppe verwendet und enthält eine Current-Eigenschaft, die einen XPathNavigator zurückgibt, der auf dem Kontextknoten des XPathNodeIterator positioniert ist. Der von der Current-Eigenschaft zurückgegebene XPathNavigator kann jedoch nicht für eine Verschiebung aus der Knotengruppe verwendet werden. Klonen Sie stattdessen den zurückgegebenen XPathNavigator, und verwenden Sie den geklonten Navigator für zusätzliche Verschiebungen.

Anschließende Änderungen des ursprünglichen XPathNavigator haben keinen Einfluss auf den geklonten XPathNavigator.

Beispiel

Im folgenden Beispiel werden die Titel aller von Herman Melville verfassten Bücher abgerufen.

Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

' Select all books authored by Melville.
Dim nodes As XPathNodeIterator = navigator.Select("descendant::book[author/last-name='Melville']")

While nodes.MoveNext()
    ' Clone the navigator returned by the Current property. 
    ' Use the cloned navigator to get the title element.
    Dim clone As XPathNavigator = nodes.Current.Clone()
    clone.MoveToFirstChild()
    Console.WriteLine("Book title: {0}", clone.Value)
End While
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

// Select all books authored by Melville.
XPathNodeIterator nodes = navigator.Select("descendant::book[author/last-name='Melville']");

while (nodes.MoveNext())
{
    // Clone the navigator returned by the Current property. 
    // Use the cloned navigator to get the title element.
    XPathNavigator clone = nodes.Current.Clone();
    clone.MoveToFirstChild();
    Console.WriteLine("Book title: {0}", clone.Value);
}
XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();
XPathExpression^ query = 
    navigator->Compile("/bookstore/book");
XPathNodeIterator^ nodes = navigator->Select(query);
XPathNavigator^ nodesNavigator = nodes->Current;
for each(XPathNavigator^ navigator in nodesNavigator->
    SelectDescendants(XPathNodeType::Text, false))
{
    Console::Write(navigator->Name);
    Console::WriteLine(navigator->Value);
}

Im Beispiel wird die Datei contosoBooks.xml als Eingabe verwendet.

<bookstore xmlns="https://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>

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

XPathNavigator-Klasse
XPathNavigator-Member
System.Xml.XPath-Namespace