Freigeben über


XPathNodeIterator Klasse

Definition

Stellt einen Iterator über einen ausgewählten Satz von Knoten bereit.

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
Vererbung
XPathNodeIterator
Implementiert

Beispiele

Im folgenden Beispiel wird die Select Methode der XPathNavigator Klasse verwendet, um einen Knotensatz mithilfe der XPathNodeIterator Klasse auszuwählen.

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

Im Beispiel wird die books.xml Datei als Eingabe verwendet.

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

Hinweise

Ein XPathNodeIterator von der XPathNavigator Klasse zurückgegebenes Objekt wird nicht auf dem ersten Knoten in einer ausgewählten Gruppe von Knoten positioniert. Ein Aufruf der MoveNext Methode der XPathNodeIterator Klasse muss erfolgen, um das XPathNodeIterator Objekt auf dem ersten Knoten in der ausgewählten Gruppe von Knoten zu positionieren.

Wenn Sie den XPathNodeIteratoraktuellen Knoten oder eines seiner Vorgänger bearbeiten, geht Ihre aktuelle Position verloren. Wenn Sie eine Anzahl von ausgewählten Knoten bearbeiten möchten, erstellen Sie ein XPathNavigator Array, kopieren Sie alle Knoten aus dem XPathNodeIterator Array in das Array, durchlaufen Sie das Array, und ändern Sie die Knoten.

Es gibt zwei Möglichkeiten zum Durchlaufen einer XPathNavigator Auflistung mithilfe der XPathNodeIterator Klasse.

Eine Möglichkeit besteht darin, die MoveNext Methode zu verwenden und dann aufzurufen Current , um die aktuelle XPathNavigator Instanz abzurufen, wie im folgenden Beispiel gezeigt:

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

Eine weitere Möglichkeit besteht darin, eine foreach Schleife zum Aufrufen der GetEnumerator Methode zu verwenden und die zurückgegebene IEnumerator Schnittstelle zum Aufzählen der Knoten zu verwenden, wie im folgenden Beispiel gezeigt:

foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next

Sie sollten entweder verwenden MoveNext und Current oder verwenden GetEnumerator. Die Kombination dieser beiden Ansätze kann zu unerwarteten Ergebnissen führen. Wenn die MoveNext Methode beispielsweise zuerst aufgerufen wird und die GetEnumerator Methode in der foreach Schleife aufgerufen wird, beginnt die foreach Schleife nicht mit dem Aufzählen der Ergebnisse vom Anfang der Auflistung, sondern von der Position nach der Current Methode.

Hinweise für Ausführende

Wenn Sie von der XPathNodeIterator Klasse erben, müssen Sie die folgenden Member überschreiben:

Konstruktoren

Name Beschreibung
XPathNodeIterator()

Initialisiert eine neue Instanz der XPathNodeIterator-Klasse.

Eigenschaften

Name Beschreibung
Count

Ruft den Index des letzten Knotens in der ausgewählten Gruppe von Knoten ab.

Current

Wenn sie in einer abgeleiteten Klasse überschrieben wird, ruft das XPathNavigator Objekt für dieses XPathNodeIteratorObjekt ab, das auf dem aktuellen Kontextknoten positioniert ist.

CurrentPosition

Beim Überschreiben in einer abgeleiteten Klasse ruft den Index der aktuellen Position in der ausgewählten Gruppe von Knoten ab.

Methoden

Name Beschreibung
Clone()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Klon dieses XPathNodeIterator Objekts zurückgegeben.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetEnumerator()

Gibt ein IEnumerator Objekt zurück, das durch den ausgewählten Knotensatz durchlaufen werden soll.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MoveNext()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird das XPathNavigator von der Current Eigenschaft zurückgegebene Objekt in den nächsten Knoten im ausgewählten Knotensatz verschoben.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
ICloneable.Clone()

Erstellt ein neues Objekt, das eine Kopie der aktuellen Instanz ist.

Erweiterungsmethoden

Name Beschreibung
AsParallel(IEnumerable)

Aktiviert die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Wandelt eine IEnumerable in eine IQueryableum.

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um.

OfType<TResult>(IEnumerable)

Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ.

Gilt für: