XPathNavigator.MoveToNext 方法

定義

XPathNavigator 移至目前節點的下一個同層級節點。

多載

MoveToNext()

在衍生類別中覆寫時,將 XPathNavigator 移至目前節點的下一個同層級節點。

MoveToNext(XPathNodeType)

XPathNavigator 移至目前節點中符合指定 XPathNodeType 的下一個同層級節點。

MoveToNext(String, String)

XPathNavigator 移到具有指定區域名稱和命名空間 URI 的下一個同層級節點。

MoveToNext()

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

在衍生類別中覆寫時,將 XPathNavigator 移至目前節點的下一個同層級節點。

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

傳回

如果 XPathNavigator 成功移至下一個同層級節點,則為 true;如果沒有其他的同層級節點,或 XPathNavigator 目前位在屬性節點上,則為 false。 如果為 falseXPathNavigator 的位置就不會變更。

範例

下列範例會以遞迴方式逐一查看節點樹狀結構,並顯示元素和文位元組點的相關資訊。

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)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

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

傳回

如果 XPathNavigator 成功移至下一個同層級節點,則為 true;如果沒有其他的同層級節點,或 XPathNavigator 目前位在屬性節點上,則為 false。 如果為 falseXPathNavigator 的位置就不會變更。

備註

方法的 MoveToNext 傳回值取決於 XPathNodeType 目前節點的 ,以及 XPathNodeType 要移至之下一個同層級節點的 。

下表顯示可移至的不同 XPathNodeType 節點和同層級節點。

目前節點的 XPathNodeType 同層級節點的 XPathNodeType
Element ElementProcessingInstructionCommentText
Text ElementProcessingInstructionCommentText
ProcessingInstruction ElementProcessingInstructionCommentText
Comment ElementProcessingInstructionCommentText
所有其他 XPathNodeType 無。

適用於

MoveToNext(String, String)

Source:
XPathNavigator.cs
Source:
XPathNavigator.cs
Source:
XPathNavigator.cs

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。

傳回

如果 XPathNavigator 成功移至下一個同層級節點,則為 true;如果沒有其他的同層級節點,或 XPathNavigator 目前位在屬性節點上,則為 false。 如果為 falseXPathNavigator 的位置就不會變更。

適用於