XPathNavigator.MoveToNext Método

Definição

Move XPathNavigator o nó seguir irmãos do nó atual.

Sobrecargas

MoveToNext()

Quando substituído em uma classe derivada, move o XPathNavigator para o próximo nó irmão do nó atual.

MoveToNext(XPathNodeType)

Move o XPathNavigator para o próximo nó irmão do nó atual que corresponde ao XPathNodeType especificado.

MoveToNext(String, String)

Move o XPathNavigator para o próximo nó irmão com o nome local e o URI do namespace especificado.

MoveToNext()

Quando substituído em uma classe derivada, move o XPathNavigator para o próximo nó irmão do nó atual.

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

Retornos

Boolean

true se o XPathNavigator tiver êxito na movimentação para o próximo nó irmão; caso contrário, false se não houver mais nenhum irmão ou se o XPathNavigator estiver atualmente posicionado em um nó de atributo. Se for false, a posição do XPathNavigator permanecerá inalterada.

Exemplos

O exemplo a seguir itera sobre a árvore de nó recursivamente e exibe informações sobre nós de elemento e 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

O exemplo usa o arquivo books.xml como entrada.

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

Confira também

Aplica-se a

MoveToNext(XPathNodeType)

Move o XPathNavigator para o próximo nó irmão do nó atual que corresponde ao 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

O XPathNodeType do nó irmão para movimentação.

Retornos

Boolean

true se o XPathNavigator tiver êxito na movimentação para o próximo nó irmão; caso contrário, false se não houver mais nenhum irmão ou se o XPathNavigator estiver atualmente posicionado em um nó de atributo. Se for false, a posição do XPathNavigator permanecerá inalterada.

Comentários

O valor retornado do MoveToNext método depende do XPathNodeType nó atual e do XPathNodeType próximo nó irmão para o qual mover.

A tabela a seguir mostra os diferentes XPathNodeType nós e os nós irmãos para os quais eles podem se mover.

XPathNodeType do Nó Atual XPathNodeType do Nó Irmão
Element Element, ProcessingInstruction, Comment ou Text.
Text Element, ProcessingInstruction, Comment ou Text.
ProcessingInstruction Element, ProcessingInstruction, Comment ou Text.
Comment Element, ProcessingInstruction, Comment ou Text.
Todos os outros XPathNodeType valores Nenhum.

Aplica-se a

MoveToNext(String, String)

Move o XPathNavigator para o próximo nó irmão com o nome local e o URI do namespace especificado.

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

O nome local do próximo nó irmão para o qual mover.

namespaceURI
String

O URI do namespace do próximo nó irmão para o qual mover.

Retornos

Boolean

true se o XPathNavigator tiver êxito na movimentação para o próximo nó irmão, false se não houver mais nenhum irmão ou se o XPathNavigator estiver posicionado em um nó de atributo no momento. Se for false, a posição do XPathNavigator permanecerá inalterada.

Aplica-se a