XPathNodeIterator Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen Iterator für eine ausgewählte Gruppe 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 Klasse verwendet, um einen Knotensatz mithilfe der XPathNodeIterator XPathNavigator Klasse auszuwählen.
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
In diesem Beispiel wird die Datei books.xml
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 vorgenommen werden, um das XPathNodeIterator Objekt im ersten Knoten in der ausgewählten Gruppe von Knoten zu positionieren.
Wenn Sie den XPathNodeIteratoraktuellen Knoten oder einen seiner Vorgänger bearbeiten, gehen Ihre aktuelle Position verloren. Wenn Sie eine Reihe von knoten bearbeiten möchten, die Sie ausgewählt haben, erstellen Sie ein XPathNavigator Array, kopieren Sie alle Knoten aus dem XPathNodeIterator Array, durchlaufen Sie dann 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 Current die aktuelle XPathNavigator Instanz abzurufen, wie im folgenden Beispiel:
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
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 wie im folgenden Beispiel zu verwenden:
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
Sie sollten entweder verwenden MoveNext und oder Current 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 der Aufzählung 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 außer Kraft setzen:
Konstruktoren
XPathNodeIterator() |
Initialisiert eine neue Instanz der XPathNodeIterator-Klasse. |
Eigenschaften
Count |
Ruft den Index des letzten Knotens in der ausgewählten Gruppe von Knoten ab. |
Current |
Ruft beim außer Kraft setzen in einer abgeleiteten Klasse das XPathNavigator-Objekt für dieses XPathNodeIterator ab, das im aktuellen Kontextknoten positioniert wurde. |
CurrentPosition |
Ruft beim Überschreiben in einer abgeleiteten Klasse den Index der aktuellen Position in der ausgewählten Gruppe von Knoten ab. |
Methoden
Clone() |
Gibt beim Überschreiben in einer abgeleiteten Klasse einen Klon dieses XPathNodeIterator-Objekts zurück. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetEnumerator() |
Gibt ein IEnumerator-Objekt zurück, mit dem die Gruppe der ausgewählten Knoten durchlaufen werden kann. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
MoveNext() |
Beim Überschreiben in einer abgeleiteten Klasse wird das von der Current-Eigenschaft zurückgegebene XPathNavigator-Objekt auf den nächsten Knoten in der ausgewählten Knotengruppe verschoben. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
ICloneable.Clone() |
Erstellt ein neues Objekt, das eine Kopie der aktuellen Instanz darstellt. |
Erweiterungsmethoden
Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um |
OfType<TResult>(IEnumerable) |
Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs |
AsParallel(IEnumerable) |
Ermöglicht die Parallelisierung einer Abfrage. |
AsQueryable(IEnumerable) |
Konvertiert einen IEnumerable in einen IQueryable. |