XPathNavigator.MoveToNext Método

Definição

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

Sobrecargas

Nome Description
MoveToNext()

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

MoveToNext(XPathNodeType)

Move o XPathNavigator nó irmão seguinte do nó atual que corresponde ao XPathNodeType especificado.

MoveToNext(String, String)

Move o XPathNavigator nó irmão seguinte com o nome local e o URI do namespace especificados.

MoveToNext()

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

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

Retornos

true se a XPathNavigator mudança for bem-sucedida para o próximo nó irmão; caso contrário, false se não houver mais irmãos ou se estiver XPathNavigator posicionado no momento em um nó de atributo. Se false, a posição do XPathNavigator é inalterada.

Exemplos

O exemplo a seguir itera na árvore do nó recursivamente e exibe informações sobre nós de elemento e texto.

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 books.xml arquivo como uma 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 nó irmão seguinte 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 nó irmão para o qual se mudar.

Retornos

true se a XPathNavigator mudança for bem-sucedida para o próximo nó irmão; caso contrário, false se não houver mais irmãos ou se estiver XPathNavigator posicionado no momento em um nó de atributo. Se false, a posição do XPathNavigator é 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, ProcessingInstructionou CommentText.
Text Element, ProcessingInstructionou CommentText.
ProcessingInstruction Element, ProcessingInstructionou CommentText.
Comment Element, ProcessingInstructionou CommentText.
Todos os outros XPathNodeType valores Nenhum.

Aplica-se a

MoveToNext(String, String)

Move o XPathNavigator nó irmão seguinte com o nome local e o URI do namespace 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

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

namespaceURI
String

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

Retornos

true se for XPathNavigator bem-sucedido mover para o próximo nó irmão; false se não houver mais irmãos ou se estiver XPathNavigator posicionado no momento em um nó de atributo. Se false, a posição do XPathNavigator é inalterada.

Aplica-se a