Sdílet prostřednictvím


XPathNavigator.MoveToNext Metoda

Definice

Přesune XPathNavigator na další uzel na stejné úrovni aktuálního uzlu.

Přetížení

MoveToNext()

Při přepsání v odvozené třídě přesune XPathNavigator objekt na další uzel na stejné úrovni aktuálního uzlu.

MoveToNext(XPathNodeType)

Přesune XPathNavigator na další uzel na stejné úrovni aktuálního uzlu, který odpovídá zadanému XPathNodeType uzlu.

MoveToNext(String, String)

Přesune XPathNavigator na další uzel na stejné úrovni se zadaným místním názvem a identifikátorem URI oboru názvů.

MoveToNext()

Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs

Při přepsání v odvozené třídě přesune XPathNavigator objekt na další uzel na stejné úrovni aktuálního uzlu.

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

Návraty

true XPathNavigator pokud se úspěšně přesune na další uzel na stejné úrovni, v opačném případě, false pokud neexistují žádné další na stejné úrovni nebo pokud XPathNavigator je aktuálně umístěn na uzlu atributu. Pokud false, pozice je XPathNavigator beze změny.

Příklady

Následující příklad rekurzivně prochází strom uzlu a zobrazuje informace o uzlech elementů a textu.

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

V příkladu se books.xml soubor používá jako vstup.

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

Viz také

Platí pro

MoveToNext(XPathNodeType)

Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs

Přesune XPathNavigator na další uzel na stejné úrovni aktuálního uzlu, který odpovídá zadanému XPathNodeType uzlu.

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

Parametry

type
XPathNodeType

Uzel XPathNodeType na stejné úrovni, na který se má přesunout.

Návraty

true XPathNavigator pokud se úspěšně přesune na další uzel na stejné úrovni, v opačném případě, false pokud neexistují žádné další na stejné úrovni nebo pokud XPathNavigator je aktuálně umístěn na uzlu atributu. Pokud false, pozice je XPathNavigator beze změny.

Poznámky

Vrácená hodnota MoveToNext metody závisí na XPathNodeType aktuálním uzlu a XPathNodeType na dalším uzlu na stejné úrovni, na který se má přesunout.

Následující tabulka uvádí různé XPathNodeType uzly a uzly na stejné úrovni, na které se můžou přesunout.

XPathNodeType aktuálního uzlu XPathNodeType uzlu na stejné úrovni
Element Element, ProcessingInstruction, Commentnebo Text.
Text Element, ProcessingInstruction, Commentnebo Text.
ProcessingInstruction Element, ProcessingInstruction, Commentnebo Text.
Comment Element, ProcessingInstruction, Commentnebo Text.
Všechny ostatní XPathNodeType hodnoty Žádné

Platí pro

MoveToNext(String, String)

Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs
Zdroj:
XPathNavigator.cs

Přesune XPathNavigator na další uzel na stejné úrovni se zadaným místním názvem a identifikátorem URI oboru názvů.

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

Parametry

localName
String

Místní název dalšího uzlu na stejné úrovni, na který se má přesunout.

namespaceURI
String

Identifikátor URI oboru názvů dalšího uzlu na stejné úrovni, na který se má přesunout.

Návraty

true XPathNavigator pokud je úspěšný přesun na další uzel na stejné úrovni, false pokud neexistují žádné další na stejné úrovni, nebo pokud XPathNavigator je aktuálně umístěn na uzlu atributu. Pokud false, pozice je XPathNavigator beze změny.

Platí pro