XPathNavigator.MoveToNext XPathNavigator.MoveToNext XPathNavigator.MoveToNext XPathNavigator.MoveToNext Method

定義

XPathNavigator を現在のノードの次の兄弟ノードに移動します。Moves the XPathNavigator to the next sibling node of the current node.

オーバーロード

MoveToNext() MoveToNext() MoveToNext() MoveToNext()

派生クラスでオーバーライドされると、XPathNavigator を現在のノードの次の兄弟ノードに移動します。When overridden in a derived class, moves the XPathNavigator to the next sibling node of the current node.

MoveToNext(XPathNodeType) MoveToNext(XPathNodeType) MoveToNext(XPathNodeType) MoveToNext(XPathNodeType)

XPathNavigator を、指定された XPathNodeType に一致する現在のノードの次の兄弟ノードに移動します。Moves the XPathNavigator to the next sibling node of the current node that matches the XPathNodeType specified.

MoveToNext(String, String) MoveToNext(String, String) MoveToNext(String, String) MoveToNext(String, String)

XPathNavigator を、指定されたローカル名と名前空間 URI を持つ次の兄弟ノードに移動します。Moves the XPathNavigator to the next sibling node with the local name and namespace URI specified.

MoveToNext() MoveToNext() MoveToNext() 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 が属性ノードに現在配置されている場合は falsetrue 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) MoveToNext(XPathNodeType) MoveToNext(XPathNodeType) 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 XPathNodeType XPathNodeType

移動先となる兄弟ノードの XPathNodeTypeThe XPathNodeType of the sibling node to move to.

戻り値

XPathNavigator が次の兄弟ノードに正常に移動された場合は true。それ以上兄弟がないか、XPathNavigator が属性ノードに現在配置されている場合は falsetrue 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.

現在のノードの Xpath NodetypeCurrent Node's XPathNodeType 兄弟ノードの Xpath NodetypeSibling Node's XPathNodeType
Element ElementProcessingInstructionComment、または Text です。Element, ProcessingInstruction, Comment, or Text.
Text ElementProcessingInstructionComment、または Text です。Element, ProcessingInstruction, Comment, or Text.
ProcessingInstruction ElementProcessingInstructionComment、または Text です。Element, ProcessingInstruction, Comment, or Text.
Comment ElementProcessingInstructionComment、または Text です。Element, ProcessingInstruction, Comment, or Text.
その他XPathNodeTypeのすべての値All other XPathNodeType values なし。None.

MoveToNext(String, String) MoveToNext(String, String) MoveToNext(String, String) 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 String String String

移動先となる次の兄弟ノードのローカル名。The local name of the next sibling node to move to.

namespaceURI
String String String String

移動先となる次の兄弟ノードの名前空間 URI。The namespace URI of the next sibling node to move to.

戻り値

XPathNavigator が次の兄弟ノードに正常に移動した場合は true。それ以上兄弟がないか、XPathNavigator の現在位置が属性ノードの場合は falsetrue 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.

適用対象