Share via


XPathNavigator.MoveToNext 메서드

정의

현재 노드의 다음 형제 노드로 XPathNavigator를 이동합니다.

오버로드

MoveToNext()

파생 클래스에서 재정의되면 XPathNavigator를 현재 노드의 다음 형제 노드로 이동합니다.

MoveToNext(XPathNodeType)

XPathNavigator를 현재 노드에서 지정된 XPathNodeType과 일치하는 다음 형제 노드로 이동합니다.

MoveToNext(String, String)

XPathNavigator를 지정된 로컬 이름 및 네임스페이스 URI를 사용하는 다음 형제 노드로 이동합니다.

MoveToNext()

파생 클래스에서 재정의되면 XPathNavigator를 현재 노드의 다음 형제 노드로 이동합니다.

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

반환

Boolean

XPathNavigator가 다음 형제 노드로 성공적으로 이동하면 true이고 더 이상 현재 노드가 없거나 XPathNavigator가 현재 특성 노드에 있으면 false입니다. false이면 XPathNavigator의 위치가 변경되지 않습니다.

예제

다음 예제에서는 노드 트리를 재귀적으로 반복하고 요소 및 텍스트 노드에 대한 정보를 표시합니다.

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 파일을 입력으로 사용합니다.

<?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과 일치하는 다음 형제 노드로 이동합니다.

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입니다.

반환

Boolean

XPathNavigator가 다음 형제 노드로 성공적으로 이동하면 true이고 더 이상 현재 노드가 없거나 XPathNavigator가 현재 특성 노드에 있으면 false입니다. false이면 XPathNavigator의 위치가 변경되지 않습니다.

설명

메서드의 MoveToNext 반환 값은 현재 노드와 XPathNodeType 이동할 다음 형제 노드의 값에 따라 달라집니다XPathNodeType.

다음 표에서는 이동할 수 있는 서로 다른 XPathNodeType 노드 및 형제 노드를 보여 줍니다.

현재 노드의 XPathNodeType 형제 노드의 XPathNodeType
Element 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.
Text 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.
ProcessingInstruction 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.
Comment 예를 들면 Element, ProcessingInstruction, Comment 또는 Text와 같습니다.
다른 모든 XPathNodeType 없음

적용 대상

MoveToNext(String, String)

XPathNavigator를 지정된 로컬 이름 및 네임스페이스 URI를 사용하는 다음 형제 노드로 이동합니다.

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

이동하려는 다음 형제 노드의 로컬 이름입니다.

namespaceURI
String

이동하려는 다음 형제 노드의 네임스페이스 URI입니다.

반환

Boolean

XPathNavigator가 다음 형제 노드로 성공적으로 이동하면 true이고, 더 이상 형제 노드가 없거나 현재 XPathNavigator가 특성 노드에 있으면 false입니다. false이면 XPathNavigator의 위치가 변경되지 않습니다.

적용 대상