XPathNavigator.MoveToNext Método

Definição

Move o XPathNavigator para o próximo nó irmão do nó atual.

Sobrecargas

Name Description
MoveToNext()

Quando sobreposto numa classe derivada, move o XPathNavigator para o nó irmão seguinte 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 espaço de nomes especificados.

MoveToNext()

Quando sobreposto numa classe derivada, move o XPathNavigator para o 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

Devoluções

true se o XPathNavigator for bem-sucedido ao passar para o próximo nó irmão; caso contrário, false se não houver mais irmãos ou se o XPathNavigator estiver atualmente posicionado num nó de atributo. Se false, a posição do XPathNavigator permanece inalterada.

Exemplos

O exemplo seguinte itera recursivamente sobre a árvore de nós e apresenta 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>

Ver 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 onde se deve mudar.

Devoluções

true se o XPathNavigator for bem-sucedido ao passar para o próximo nó irmão; caso contrário, false se não houver mais irmãos ou se o XPathNavigator estiver atualmente posicionado num nó de atributo. Se false, a posição do XPathNavigator permanece inalterada.

Observações

O valor de retorno do MoveToNext método depende do XPathNodeType nó atual e XPathNodeType do próximo nó irmão para onde se deve passar.

A tabela seguinte mostra os diferentes XPathNodeType nós e os nós irmãos para onde podem mover-se.

XPathNodeType do Current Node XPathNodeType do Sibling Node
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 espaço de nomes 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 mudar.

namespaceURI
String

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

Devoluções

true se o XPathNavigator for bem-sucedido a mover-se para o nó irmão seguinte; false se não houver mais irmãos, ou se o XPathNavigator estiver atualmente posicionado num nó de atributo. Se false, a posição do XPathNavigator permanece inalterada.

Aplica-se a