XPathNavigator.MoveToNext Méthode

Définition

Déplace l'objet XPathNavigator vers le nœud frère suivant du nœud actuel.

Surcharges

MoveToNext()

En cas de substitution dans une classe dérivée, déplace XPathNavigator vers le nœud frère suivant du nœud actuel.

MoveToNext(XPathNodeType)

Déplace le XPathNavigator vers le nœud frère suivant du nœud actuel qui correspond au XPathNodeType spécifié.

MoveToNext(String, String)

Déplace XPathNavigator vers le nœud frère suivant doté du nom local et de l'URI d'espace de noms spécifiés.

MoveToNext()

En cas de substitution dans une classe dérivée, déplace XPathNavigator vers le nœud frère suivant du nœud actuel.

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

Retours

Boolean

true si le XPathNavigator se déplace correctement au nœud frère suivant ; sinon, false s’il n’y a plus d’autres nœuds frères ou si le XPathNavigator est actuellement positionné sur un nœud d’attribut. Si la valeur est false, c’est que la position du XPathNavigator est inchangée.

Exemples

L’exemple suivant itère sur l’arborescence des nœuds de manière récursive et affiche des informations sur les nœuds d’élément et de texte.

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

L'exemple prend le fichier books.xml comme entrée.

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

Voir aussi

S’applique à

MoveToNext(XPathNodeType)

Déplace le XPathNavigator vers le nœud frère suivant du nœud actuel qui correspond au XPathNodeType spécifié.

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

Paramètres

type
XPathNodeType

XPathNodeType du nœud frère vers lequel se déplacer.

Retours

Boolean

true si le XPathNavigator se déplace correctement au nœud frère suivant ; sinon, false s’il n’y a plus d’autres nœuds frères ou si le XPathNavigator est actuellement positionné sur un nœud d’attribut. Si la valeur est false, c’est que la position du XPathNavigator est inchangée.

Remarques

La valeur de retour de la MoveToNext méthode dépend du XPathNodeType nœud actuel et du XPathNodeType nœud frère suivant à passer.

Le tableau suivant montre les différents XPathNodeType nœuds et les nœuds frères auxquels ils peuvent se déplacer.

XPathNodeType du nœud actuel XPathNodeType du nœud frère
Element Element, ProcessingInstruction, Comment ou Text.
Text Element, ProcessingInstruction, Comment ou Text.
ProcessingInstruction Element, ProcessingInstruction, Comment ou Text.
Comment Element, ProcessingInstruction, Comment ou Text.
Tous les autres XPathNodeType valeurs Aucun.

S’applique à

MoveToNext(String, String)

Déplace XPathNavigator vers le nœud frère suivant doté du nom local et de l'URI d'espace de noms spécifiés.

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

Paramètres

localName
String

Nom local du nœud frère suivant vers lequel se déplacer.

namespaceURI
String

URI d'espace de noms du nœud frère suivant vers lequel se déplacer.

Retours

Boolean

true si le XPathNavigator se déplace correctement vers le nœud frère suivant ; false s’il n’existe plus de frères ou si le XPathNavigator est actuellement positionné sur un nœud d’attribut. Si la valeur est false, c’est que la position du XPathNavigator est inchangée.

S’applique à