XPathNavigator.MoveToNext 메서드

정의

현재 노드의 다음 형제 노드로 XPathNavigator를 이동합니다.Moves the XPathNavigator to the next sibling node of the current node.

오버로드

MoveToNext()

파생 클래스에서 재정의되면 XPathNavigator를 현재 노드의 다음 형제 노드로 이동합니다.When overridden in a derived class, moves the XPathNavigator to the next sibling node of the current node.

MoveToNext(XPathNodeType)

XPathNavigator를 현재 노드에서 지정된 XPathNodeType과 일치하는 다음 형제 노드로 이동합니다.Moves the XPathNavigator to the next sibling node of the current node that matches the XPathNodeType specified.

MoveToNext(String, String)

XPathNavigator를 지정된 로컬 이름 및 네임스페이스 URI를 사용하는 다음 형제 노드로 이동합니다.Moves the XPathNavigator to the next sibling node with the local name and namespace URI specified.

MoveToNext()

파생 클래스에서 재정의되면 XPathNavigator를 현재 노드의 다음 형제 노드로 이동합니다.When overridden in a derived class, moves the XPathNavigator to the next sibling node of the current node.

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

반환

XPathNavigator가 다음 형제 노드로 성공적으로 이동하면 true이고 더 이상 현재 노드가 없거나 XPathNavigator가 현재 특성 노드에 있으면 false입니다.true if the XPathNavigator is successful moving to the next sibling node; otherwise, false if there are no more siblings or if the XPathNavigator is currently positioned on an attribute node. false이면 XPathNavigator의 위치가 변경되지 않습니다.If false, the position of the XPathNavigator is unchanged.

예제

다음 예제에서는 노드 트리 재귀적으로 반복 하 고 요소 및 텍스트 노드에 대 한 정보를 표시 합니다.The following example iterates over the node tree recursively, and displays information about element and text nodes.

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

이 예제에서는 books.xml 파일을 입력으로 사용합니다.The example takes the books.xml file as an input.

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

추가 정보

MoveToNext(XPathNodeType)

XPathNavigator를 현재 노드에서 지정된 XPathNodeType과 일치하는 다음 형제 노드로 이동합니다.Moves the XPathNavigator to the next sibling node of the current node that matches the XPathNodeType specified.

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

매개 변수

type
XPathNodeType

이동하려는 대상 형제 노드의 XPathNodeType입니다.The XPathNodeType of the sibling node to move to.

반환

XPathNavigator가 다음 형제 노드로 성공적으로 이동하면 true이고 더 이상 현재 노드가 없거나 XPathNavigator가 현재 특성 노드에 있으면 false입니다.true if the XPathNavigator is successful moving to the next sibling node; otherwise, false if there are no more siblings or if the XPathNavigator is currently positioned on an attribute node. false이면 XPathNavigator의 위치가 변경되지 않습니다.If false, the position of the XPathNavigator is unchanged.

설명

반환 값을 MoveToNext 메서드에 따라 달라 집니다 합니다 XPathNodeType 현재 노드의 및 XPathNodeType 이동 하려는 다음 형제 노드의의 합니다.The return value of the MoveToNext method depends on the XPathNodeType of the current node and the XPathNodeType of the next sibling node to move to.

다음 표에서 다양 한 XPathNodeType 노드와 형제 노드를 이동할 수 있습니다.The following table shows the different XPathNodeType nodes and the sibling nodes they can move to.

현재 노드의 XPathNodeTypeCurrent Node's XPathNodeType 형제 노드 XPathNodeTypeSibling Node's XPathNodeType
Element 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.Element, ProcessingInstruction, Comment, or Text.
Text 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.Element, ProcessingInstruction, Comment, or Text.
ProcessingInstruction 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.Element, ProcessingInstruction, Comment, or Text.
Comment 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.Element, ProcessingInstruction, Comment, or Text.
다른 모든 XPathNodeTypeAll other XPathNodeType values 없음None.

MoveToNext(String, String)

XPathNavigator를 지정된 로컬 이름 및 네임스페이스 URI를 사용하는 다음 형제 노드로 이동합니다.Moves the XPathNavigator to the next sibling node with the local name and namespace URI specified.

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

매개 변수

localName
String

이동하려는 다음 형제 노드의 로컬 이름입니다.The local name of the next sibling node to move to.

namespaceURI
String

이동하려는 다음 형제 노드의 네임스페이스 URI입니다.The namespace URI of the next sibling node to move to.

반환

XPathNavigator가 다음 형제 노드로 성공적으로 이동하면 true이고, 더 이상 형제 노드가 없거나 현재 XPathNavigator가 특성 노드에 있으면 false입니다.true if the XPathNavigator is successful moving to the next sibling node; false if there are no more siblings, or if the XPathNavigator is currently positioned on an attribute node. false이면 XPathNavigator의 위치가 변경되지 않습니다.If false, the position of the XPathNavigator is unchanged.

적용 대상