XPathNavigator.MoveToNext Metodo

Definizione

Sposta l'oggetto XPathNavigator nel successivo nodo fratello del nodo corrente.

Overload

Nome Descrizione
MoveToNext()

Quando sottoposto a override in una classe derivata, sposta l'oggetto XPathNavigator nel nodo di pari livello successivo del nodo corrente.

MoveToNext(XPathNodeType)

Sposta l'oggetto XPathNavigator nel nodo di pari livello successivo del nodo corrente che corrisponde all'oggetto XPathNodeType specificato.

MoveToNext(String, String)

Sposta l'oggetto XPathNavigator nel nodo di pari livello successivo con il nome locale e l'URI dello spazio dei nomi specificati.

MoveToNext()

Quando sottoposto a override in una classe derivata, sposta l'oggetto XPathNavigator nel nodo di pari livello successivo del nodo corrente.

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

Valori restituiti

true se l'oggetto XPathNavigator ha esito positivo passando al nodo di pari livello successivo; in caso contrario, false se non sono presenti più elementi di pari livello o se l'oggetto è attualmente posizionato in un nodo dell'attributo XPathNavigator . Se false, la posizione di XPathNavigator è invariata.

Esempio

Nell'esempio seguente viene scorrere in modo ricorsivo l'albero dei nodi e vengono visualizzate informazioni sui nodi di elemento e di testo.

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

L'esempio accetta il books.xml file come input.

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

Vedi anche

Si applica a

MoveToNext(XPathNodeType)

Sposta l'oggetto XPathNavigator nel nodo di pari livello successivo del nodo corrente che corrisponde all'oggetto XPathNodeType specificato.

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

Parametri

type
XPathNodeType

Oggetto XPathNodeType del nodo di pari livello in cui spostarsi.

Valori restituiti

true se l'oggetto XPathNavigator ha esito positivo passando al nodo di pari livello successivo; in caso contrario, false se non sono presenti più elementi di pari livello o se l'oggetto è attualmente posizionato in un nodo dell'attributo XPathNavigator . Se false, la posizione di XPathNavigator è invariata.

Commenti

Il valore restituito del MoveToNext metodo dipende dall'oggetto XPathNodeType del nodo corrente e dal XPathNodeType nodo di pari livello successivo in cui spostarsi.

La tabella seguente illustra i diversi XPathNodeType nodi e i nodi di pari livello a cui possono spostarsi.

XPathNodeType del nodo corrente XPathNodeType del nodo di pari livello
Element Element ProcessingInstruction, Comment, o Text.
Text Element ProcessingInstruction, Comment, o Text.
ProcessingInstruction Element ProcessingInstruction, Comment, o Text.
Comment Element ProcessingInstruction, Comment, o Text.
Tutti gli altri XPathNodeType valori Nessuno.

Si applica a

MoveToNext(String, String)

Sposta l'oggetto XPathNavigator nel nodo di pari livello successivo con il nome locale e l'URI dello spazio dei nomi specificati.

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

Parametri

localName
String

Nome locale del nodo di pari livello successivo a cui passare.

namespaceURI
String

URI dello spazio dei nomi del nodo di pari livello successivo a cui passare.

Valori restituiti

true se l'oggetto XPathNavigator ha esito positivo passando al nodo di pari livello successivo; false se non sono presenti più elementi di pari livello o se l'oggetto è attualmente posizionato in un nodo dell'attributo XPathNavigator . Se false, la posizione di XPathNavigator è invariata.

Si applica a