Freigeben über


XPathNavigator.MoveToNext Methode

Definition

Positioniert den XPathNavigator auf den nächsten dem aktuellen Knoten nebengeordneten Knoten.

Überlädt

MoveToNext()

Verschiebt den XPathNavigator beim Überschreiben in einer abgeleiteten Klasse auf den nächsten nebengeordneten Knoten des aktuellen Knotens.

MoveToNext(XPathNodeType)

Verschiebt den XPathNavigator auf den nächsten nebengeordneten Knoten des aktuellen Knotens, der dem angegebenen XPathNodeType entspricht.

MoveToNext(String, String)

Verschiebt den XPathNavigator auf den nächsten nebengeordneten Knoten mit dem angegebenen lokalen Namen und Namespace-URI.

MoveToNext()

Quelle:
XPathNavigator.cs
Quelle:
XPathNavigator.cs
Quelle:
XPathNavigator.cs

Verschiebt den XPathNavigator beim Überschreiben in einer abgeleiteten Klasse auf den nächsten nebengeordneten Knoten des aktuellen Knotens.

public:
 abstract bool MoveToNext();
public abstract bool MoveToNext ();
abstract member MoveToNext : unit -> bool
Public MustOverride Function MoveToNext () As Boolean

Gibt zurück

true, wenn der XPathNavigator auf den nächsten nebengeordneten Knoten verschoben werden konnte. false, wenn keine weiteren nebengeordneten Knoten vorhanden sind oder der XPathNavigator derzeit auf einem Attributknoten positioniert ist. Wenn false, bleibt die Position des XPathNavigator unverändert.

Beispiele

Im folgenden Beispiel wird die Knotenstruktur rekursiv durchlaufen und Informationen zu Element- und Textknoten angezeigt.

static void XPathNavigatorMethods_MoveToNext()
{
    
    XPathDocument^ document = gcnew XPathDocument("books.xml");
    XPathNavigator^ navigator = document->CreateNavigator();
    XPathNodeIterator^ nodeset = navigator->Select("descendant::book[author/last-name='Melville']");

    while (nodeset->MoveNext())
    {
        // Clone iterator here when working with it.
        RecursiveWalk(nodeset->Current->Clone());
    }
}

static void RecursiveWalk(XPathNavigator^ navigator)
{
    switch (navigator->NodeType)
    {
    case XPathNodeType::Element:
        if (navigator->Prefix == String::Empty)
                Console::WriteLine("<{0}>", navigator->LocalName);
            else
        Console::Write("<{0}:{1}>", navigator->Prefix, navigator->LocalName);
                Console::WriteLine("\t" + navigator->NamespaceURI);
            break;
    case XPathNodeType::Text:
            Console::WriteLine("\t" + navigator->Value);
            break;
    }

    if (navigator->MoveToFirstChild())
    {
        do
        {
            RecursiveWalk(navigator);
        } while (navigator->MoveToNext());

        navigator->MoveToParent();
        if (navigator->NodeType == XPathNodeType::Element)
            Console::WriteLine("</{0}>", navigator->Name);
    }
    else
    {
        if (navigator->NodeType == XPathNodeType::Element)
        {
            Console::WriteLine("</{0}>", navigator->Name);
       }
    }
}
static void XPathNavigatorMethods_MoveToNext()
{

    XPathDocument document = new XPathDocument("books.xml");
    XPathNavigator navigator = document.CreateNavigator();
    XPathNodeIterator nodeset = navigator.Select("descendant::book[author/last-name='Melville']");

    while (nodeset.MoveNext())
    {
        // Clone iterator here when working with it.
        RecursiveWalk(nodeset.Current.Clone());
    }
}

public static void RecursiveWalk(XPathNavigator navigator)
{
    switch (navigator.NodeType)
    {
        case XPathNodeType.Element:
            if (string.IsNullOrEmpty(navigator.Prefix))
                Console.WriteLine("<{0}>", navigator.LocalName);
            else
                Console.Write("<{0}:{1}>", navigator.Prefix, navigator.LocalName);
            Console.WriteLine("\t" + navigator.NamespaceURI);
            break;
        case XPathNodeType.Text:
            Console.WriteLine("\t" + navigator.Value);
            break;
    }

    if (navigator.MoveToFirstChild())
    {
        do
        {
            RecursiveWalk(navigator);
        } while (navigator.MoveToNext());

        navigator.MoveToParent();
        if (navigator.NodeType == XPathNodeType.Element)
            Console.WriteLine("</{0}>", navigator.Name);
    }
    else
    {
        if (navigator.NodeType == XPathNodeType.Element)
        {
            Console.WriteLine("</{0}>", navigator.Name);
        }
    }
}
Shared Sub XPathNavigatorMethods_MoveToNext()

    Dim document As XPathDocument = New XPathDocument("books.xml")
    Dim navigator As XPathNavigator = document.CreateNavigator()
    Dim nodeset As XPathNodeIterator = navigator.Select("descendant::book[author/last-name='Melville']")

    While nodeset.MoveNext()
        ' Clone iterator here when working with it.
        RecursiveWalk(nodeset.Current.Clone())
    End While

End Sub

Shared Sub RecursiveWalk(ByVal navigator As XPathNavigator)

    Select Case navigator.NodeType
        Case XPathNodeType.Element
            If navigator.Prefix = String.Empty Then
                Console.WriteLine("<{0}>", navigator.LocalName)
            Else
                Console.Write("<{0}:{1}>", navigator.Prefix, navigator.LocalName)
                Console.WriteLine(vbTab + navigator.NamespaceURI)
            End If
        Case XPathNodeType.Text
            Console.WriteLine(vbTab + navigator.Value)
    End Select

    If navigator.MoveToFirstChild() Then
        Do
            RecursiveWalk(navigator)
        Loop While (navigator.MoveToNext())

        navigator.MoveToParent()
        If (navigator.NodeType = XPathNodeType.Element) Then
            Console.WriteLine("</{0}>", navigator.Name)
        End If
    Else
        If navigator.NodeType = XPathNodeType.Element Then
            Console.WriteLine("</{0}>", navigator.Name)
        End If
    End If

End Sub

In diesem Beispiel wird die Datei books.xml als Eingabe verwendet.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <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>  

Weitere Informationen

Gilt für:

MoveToNext(XPathNodeType)

Quelle:
XPathNavigator.cs
Quelle:
XPathNavigator.cs
Quelle:
XPathNavigator.cs

Verschiebt den XPathNavigator auf den nächsten nebengeordneten Knoten des aktuellen Knotens, der dem angegebenen XPathNodeType entspricht.

public:
 virtual bool MoveToNext(System::Xml::XPath::XPathNodeType type);
public virtual bool MoveToNext (System.Xml.XPath.XPathNodeType type);
abstract member MoveToNext : System.Xml.XPath.XPathNodeType -> bool
override this.MoveToNext : System.Xml.XPath.XPathNodeType -> bool
Public Overridable Function MoveToNext (type As XPathNodeType) As Boolean

Parameter

type
XPathNodeType

Der XPathNodeType des nebengeordneten Knotens, auf den die Position verschoben werden soll.

Gibt zurück

true, wenn der XPathNavigator auf den nächsten nebengeordneten Knoten verschoben werden konnte. false, wenn keine weiteren nebengeordneten Knoten vorhanden sind oder der XPathNavigator derzeit auf einem Attributknoten positioniert ist. Wenn false, bleibt die Position des XPathNavigator unverändert.

Hinweise

Der Rückgabewert der MoveToNext -Methode hängt XPathNodeType vom des aktuellen Knotens und dem XPathNodeType des nächsten knotens ab, zu dem verschoben werden soll.

In der folgenden Tabelle sind die verschiedenen XPathNodeType Knoten und die gleichgeordneten Knoten aufgeführt, in die sie verschoben werden können.

XPathNodeType des aktuellen Knotens XPathNodeType des gleichgeordneten Knotens
Element Element, ProcessingInstruction, Comment oder Text.
Text Element, ProcessingInstruction, Comment oder Text.
ProcessingInstruction Element, ProcessingInstruction, Comment oder Text.
Comment Element, ProcessingInstruction, Comment oder Text.
Alle anderen XPathNodeType Werte Keine.

Gilt für:

MoveToNext(String, String)

Quelle:
XPathNavigator.cs
Quelle:
XPathNavigator.cs
Quelle:
XPathNavigator.cs

Verschiebt den XPathNavigator auf den nächsten nebengeordneten Knoten mit dem angegebenen lokalen Namen und Namespace-URI.

public:
 virtual bool MoveToNext(System::String ^ localName, System::String ^ namespaceURI);
public virtual bool MoveToNext (string localName, string namespaceURI);
abstract member MoveToNext : string * string -> bool
override this.MoveToNext : string * string -> bool
Public Overridable Function MoveToNext (localName As String, namespaceURI As String) As Boolean

Parameter

localName
String

Der lokale Name des nächsten nebengeordneten Knotens, auf den die Position verschoben werden soll.

namespaceURI
String

Der Namespace-URI des nächsten nebengeordneten Knotens, auf den die Position verschoben werden soll.

Gibt zurück

true, wenn der XPathNavigator auf den nächsten nebengeordneten Knoten verschoben werden konnte. false, wenn keine weiteren nebengeordneten Knoten vorhanden sind oder der XPathNavigator derzeit auf einem Attributknoten positioniert ist. Wenn false, bleibt die Position des XPathNavigator unverändert.

Gilt für: