Udostępnij za pośrednictwem


XPathNavigator.MoveToNext Metoda

Definicja

Przenosi element XPathNavigator do następnego węzła równorzędnego bieżącego węzła.

Przeciążenia

MoveToNext()

Gdy zastąpisz klasę pochodną, przenosi element XPathNavigator do następnego węzła równorzędnego bieżącego węzła.

MoveToNext(XPathNodeType)

Przenosi element XPathNavigator do następnego węzła równorzędnego bieżącego węzła zgodnego z określoną wartością XPathNodeType .

MoveToNext(String, String)

Przenosi element XPathNavigator do następnego węzła równorzędnego z określoną lokalną nazwą i identyfikatorem URI przestrzeni nazw.

MoveToNext()

Gdy zastąpisz klasę pochodną, przenosi element XPathNavigator do następnego węzła równorzędnego bieżącego węzła.

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

Zwraca

Boolean

trueXPathNavigator jeśli przejście do następnego węzła równorzędnego zakończyło się pomyślnie; false w przeciwnym razie, jeśli nie ma więcej elementów równorzędnych lub jeśli XPathNavigator element jest obecnie umieszczony w węźle atrybutu. Jeśli falsepozycja elementu XPathNavigator jest niezmieniona.

Przykłady

Poniższy przykład wykonuje iterację drzewa węzłów cyklicznie i wyświetla informacje o węzłach elementów i tekstu.

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

W przykładzie books.xml plik jest pobierany jako dane wejściowe.

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

Zobacz też

Dotyczy

MoveToNext(XPathNodeType)

Przenosi element XPathNavigator do następnego węzła równorzędnego bieżącego węzła zgodnego z określoną wartością XPathNodeType .

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

Węzeł XPathNodeType równorzędny do przejścia.

Zwraca

Boolean

trueXPathNavigator jeśli przejście do następnego węzła równorzędnego zakończyło się pomyślnie; false w przeciwnym razie, jeśli nie ma więcej elementów równorzędnych lub jeśli XPathNavigator element jest obecnie umieszczony w węźle atrybutu. Jeśli falsepozycja elementu XPathNavigator jest niezmieniona.

Uwagi

Wartość MoveToNext zwracana metody zależy od XPathNodeType bieżącego węzła i XPathNodeType następnego węzła równorzędnego do przejścia.

W poniższej tabeli przedstawiono różne XPathNodeType węzły i węzły równorzędne, do których mogą przejść.

XPathNodeType bieżącego węzła XPathNodeType węzła równorzędnego
Element Element, ProcessingInstruction, Commentlub Text.
Text Element, ProcessingInstruction, Commentlub Text.
ProcessingInstruction Element, ProcessingInstruction, Commentlub Text.
Comment Element, ProcessingInstruction, Commentlub Text.
Wszystkie inne XPathNodeType wartości Brak.

Dotyczy

MoveToNext(String, String)

Przenosi element XPathNavigator do następnego węzła równorzędnego z określoną lokalną nazwą i identyfikatorem URI przestrzeni nazw.

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

Lokalna nazwa następnego węzła równorzędnego do przejścia.

namespaceURI
String

Identyfikator URI przestrzeni nazw następnego węzła równorzędnego do przejścia.

Zwraca

Boolean

trueXPathNavigator w przypadku pomyślnego przejścia do następnego węzła równorzędnego, false jeśli nie ma więcej elementów równorzędnych lub jeśli XPathNavigator element jest obecnie umieszczony w węźle atrybutu. Jeśli falsepozycja elementu XPathNavigator jest niezmieniona.

Dotyczy