Compartir vía


XPathNavigator.MoveToNext Método

Definición

Mueve XPathNavigator al siguiente nodo relacionado del nodo actual.

Sobrecargas

MoveToNext()

Cuando se reemplaza en una clase derivada, desplaza el objeto XPathNavigator hasta el primer nodo relacionado del nodo actual.

MoveToNext(XPathNodeType)

Mueve el objeto XPathNavigator al siguiente nodo relacionado del nodo actual que coincida con el XPathNodeType especificado.

MoveToNext(String, String)

Desplaza el objeto XPathNavigator hasta el siguiente nodo relacionado con el nombre local y el URI de espacio de nombres especificados.

MoveToNext()

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

Cuando se reemplaza en una clase derivada, desplaza el objeto XPathNavigator hasta el primer nodo relacionado del nodo actual.

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

Devoluciones

true si el desplazamiento de XPathNavigator al siguiente nodo relacionado se realiza correctamente; en caso contrario, false si no hay más elementos relacionados o si XPathNavigator está actualmente situado en un nodo de atributo. Si es false, no cambia la posición de XPathNavigator.

Ejemplos

En el ejemplo siguiente se recorre en iteración el árbol de nodos de forma recursiva y se muestra información sobre los nodos de elemento y texto.

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

En el ejemplo se toma como entrada el archivo books.xml.

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

Consulte también

Se aplica a

MoveToNext(XPathNodeType)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

Mueve el objeto XPathNavigator al siguiente nodo relacionado del nodo actual que coincida con el XPathNodeType especificado.

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

Parámetros

type
XPathNodeType

XPathNodeType del nodo relacionado al que se va a desplazar.

Devoluciones

true si el desplazamiento de XPathNavigator al siguiente nodo relacionado se realiza correctamente; en caso contrario, false si no hay más elementos relacionados o si XPathNavigator está actualmente situado en un nodo de atributo. Si es false, no cambia la posición de XPathNavigator.

Comentarios

El valor devuelto del MoveToNext método depende XPathNodeType del del nodo actual y del XPathNodeType del siguiente nodo relacionado al que se va a mover.

En la tabla siguiente se muestran los distintos XPathNodeType nodos y los nodos del mismo nivel a los que pueden moverse.

XPathNodeType del nodo actual XPathNodeType del nodo relacionado
Element Element, ProcessingInstruction, Comment o Text.
Text Element, ProcessingInstruction, Comment o Text.
ProcessingInstruction Element, ProcessingInstruction, Comment o Text.
Comment Element, ProcessingInstruction, Comment o Text.
Todos los demás XPathNodeType valores Ninguno.

Se aplica a

MoveToNext(String, String)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

Desplaza el objeto XPathNavigator hasta el siguiente nodo relacionado con el nombre local y el URI de espacio de nombres especificados.

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

Parámetros

localName
String

El nombre local del siguiente nodo relacionado al que se va a desplazar.

namespaceURI
String

El URI de espacio de nombres del siguiente nodo relacionado al que se va a desplazar.

Devoluciones

true, si el elemento XPathNavigator se desplaza correctamente al siguiente nodo relacionado; false, si no hay ningún elemento relacionado más, o bien si el elemento XPathNavigator se encuentra posicionado en un nodo de un atributo. Si es false, no cambia la posición de XPathNavigator.

Se aplica a