Udostępnij za pośrednictwem


XPathNodeIterator Klasa

Definicja

Udostępnia iterator dla wybranego zestawu węzłów.

public ref class XPathNodeIterator abstract : ICloneable, System::Collections::IEnumerable
public ref class XPathNodeIterator abstract : System::Collections::IEnumerable
public ref class XPathNodeIterator abstract : ICloneable
public abstract class XPathNodeIterator : ICloneable, System.Collections.IEnumerable
public abstract class XPathNodeIterator : System.Collections.IEnumerable
public abstract class XPathNodeIterator : ICloneable
type XPathNodeIterator = class
    interface IEnumerable
    interface ICloneable
type XPathNodeIterator = class
    interface IEnumerable
type XPathNodeIterator = class
    interface ICloneable
type XPathNodeIterator = class
    interface ICloneable
    interface IEnumerable
Public MustInherit Class XPathNodeIterator
Implements ICloneable, IEnumerable
Public MustInherit Class XPathNodeIterator
Implements IEnumerable
Public MustInherit Class XPathNodeIterator
Implements ICloneable
Dziedziczenie
XPathNodeIterator
Implementuje

Przykłady

W poniższym przykładzie użyto Select metody XPathNavigator klasy do wybrania zestawu węzłów przy użyciu XPathNodeIterator klasy .

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathNodeIterator^ nodes = navigator->Select("/bookstore/book");
nodes->MoveNext();
XPathNavigator^ nodesNavigator = nodes->Current;

XPathNodeIterator^ nodesText = nodesNavigator->SelectDescendants(XPathNodeType::Text, false);

while (nodesText->MoveNext())
    Console::WriteLine(nodesText->Current->Value);
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator nodes = navigator.Select("/bookstore/book");
nodes.MoveNext();
XPathNavigator nodesNavigator = nodes.Current;

XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

while (nodesText.MoveNext())
    Console.WriteLine(nodesText.Current.Value);
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")
nodes.MoveNext()
Dim nodesNavigator As XPathNavigator = nodes.Current

Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

While nodesText.MoveNext()
    Console.WriteLine(nodesText.Current.Value)
End While

W przykładzie plik jest pobierany books.xml jako dane wejściowe.

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

Uwagi

XPathNodeIterator Obiekt zwracany przez klasę XPathNavigator nie jest umieszczony w pierwszym węźle w wybranym zestawie węzłów. Wywołanie MoveNext metody XPathNodeIterator klasy musi zostać wykonane, aby umieścić XPathNodeIterator obiekt w pierwszym węźle w wybranym zestawie węzłów.

W przypadku korzystania z elementu XPathNodeIterator, jeśli edytujesz bieżący węzeł lub którykolwiek z jego elementów nadrzędnych, bieżąca pozycja zostanie utracona. Jeśli chcesz edytować kilka wybranych węzłów, utwórz tablicę XPathNavigator , skopiuj wszystkie węzły z XPathNodeIterator tablicy do tablicy, a następnie wykonaj iterację po tablicy i zmodyfikuj węzły.

Istnieją dwa sposoby iteracji XPathNavigator kolekcji przy użyciu XPathNodeIterator klasy .

Jednym ze sposobów jest użycie MoveNext metody , a następnie wywołanie Current metody w celu pobrania bieżącego XPathNavigator wystąpienia, jak w poniższym przykładzie:

while (nodeIterator->MoveNext())
{
    XPathNavigator^ n = nodeIterator->Current;
Console::WriteLine(n->LocalName);
}
while (nodeIterator.MoveNext())
{
    XPathNavigator n = nodeIterator.Current;
    Console.WriteLine(n.LocalName);
}
While nodeIterator.MoveNext()
    Dim n As XPathNavigator = nodeIterator.Current
    Console.WriteLine(n.LocalName)
End While

Innym sposobem jest użycie foreach pętli w celu wywołania GetEnumerator metody i użycia zwróconego IEnumerator interfejsu w celu wyliczenia węzłów, jak w poniższym przykładzie:

for each (XPathNavigator^ n in nodeIterator)
Console::WriteLine(n->LocalName);
foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next

Należy użyć polecenia MoveNext i Current lub użyć polecenia GetEnumerator. Połączenie tych dwóch podejść może spowodować nieoczekiwane wyniki. Jeśli na przykład MoveNext metoda jest wywoływana jako pierwsza, a następnie GetEnumerator metoda jest wywoływana w foreach pętli, foreach pętla nie rozpocznie wyliczania wyników od początku kolekcji, ale z pozycji po metodzie Current .

Uwagi dotyczące implementowania

Podczas dziedziczenia XPathNodeIterator z klasy należy zastąpić następujące elementy członkowskie:

Konstruktory

XPathNodeIterator()

Inicjuje nowe wystąpienie klasy XPathNodeIterator.

Właściwości

Count

Pobiera indeks ostatniego węzła w wybranym zestawie węzłów.

Current

Po zastąpieniu w klasie pochodnej pobiera XPathNavigator obiekt dla tego XPathNodeIteratorobiektu , umieszczony w bieżącym węźle kontekstu.

CurrentPosition

Po zastąpieniu w klasie pochodnej pobiera indeks bieżącej pozycji w wybranym zestawie węzłów.

Metody

Clone()

Po zastąpieniu w klasie pochodnej zwraca klon tego XPathNodeIterator obiektu.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetEnumerator()

IEnumerator Zwraca obiekt do iterowania po wybranym zestawie węzłów.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MoveNext()

Po przesłonięciu w klasie pochodnej obiekt XPathNavigator zwracany przez Current właściwość do następnego węzła w wybranym zestawie węzłów.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

ICloneable.Clone()

Tworzy nowy obiekt, który jest kopią bieżącego wystąpienia.

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy elementu IEnumerable na określony typ.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable elementu na podstawie określonego typu.

AsParallel(IEnumerable)

Umożliwia równoległość zapytania.

AsQueryable(IEnumerable)

Konwertuje element IEnumerable na .IQueryable

Dotyczy