XPathNavigator.MoveToNext Метод

Определение

Перемещает XPathNavigator к следующему одноуровневому узлу текущего узла.

Перегрузки

Имя Описание
MoveToNext()

При переопределении в производном классе перемещается XPathNavigator к следующему одноуровневой узлу текущего узла.

MoveToNext(XPathNodeType)

Перемещает следующий одноуровневый XPathNavigator узел текущего узла, соответствующий указанному XPathNodeType .

MoveToNext(String, String)

Перемещает узел XPathNavigator следующего брата с указанным локальным именем и URI пространства имен.

MoveToNext()

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

При переопределении в производном классе перемещается XPathNavigator к следующему одноуровневой узлу текущего узла.

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

Возвращаемое значение

true XPathNavigator Значение , если выполняется успешное перемещение на следующий узел-одноуровневый элемент; в противном случае, false если на узле атрибутов больше нет одноуровневых элементов или XPathNavigator если он находится в данный момент на узле атрибутов. Если falseположение XPathNavigator без изменений.

Примеры

В следующем примере выполняется рекурсивная итерацию дерева узлов и отображаются сведения об элементах и текстовых узлах.

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.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
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 узел, на который нужно перейти.

Возвращаемое значение

true XPathNavigator Значение , если выполняется успешное перемещение на следующий узел-одноуровневый элемент; в противном случае, false если на узле атрибутов больше нет одноуровневых элементов или XPathNavigator если он находится в данный момент на узле атрибутов. Если 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.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
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) пространства имен следующего одноуровневого узла, на который необходимо перейти.

Возвращаемое значение

true XPathNavigator Значение , если выполняется успешное перемещение к следующему узлу с одноуровневым элементом; false если нет дополнительных братьев или XPathNavigator находится в данный момент на узле атрибутов. Если falseположение XPathNavigator без изменений.

Применяется к