XPathNodeIterator Klass

Definition

Tillhandahåller en iterator över en vald uppsättning noder.

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

Exempel

I följande exempel används Select -metoden för XPathNavigator klassen för att välja en noduppsättning med hjälp av XPathNodeIterator klassen .

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

Exemplet tar books.xml-filen som indata.

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

Kommentarer

Ett XPathNodeIterator objekt som returneras av XPathNavigator klassen placeras inte på den första noden i en vald uppsättning noder. Ett anrop till MoveNext -metoden för XPathNodeIterator klassen måste göras för att placera XPathNodeIterator objektet på den första noden i den valda uppsättningen noder.

När du använder XPathNodeIterator, om du redigerar den aktuella noden eller någon av dess överordnade noder, går din aktuella position förlorad. Om du vill redigera ett antal noder som du har valt skapar du en XPathNavigator matris, kopierar alla noder från XPathNodeIterator matrisen till matrisen, itererar sedan genom matrisen och ändrar noderna.

Det finns två sätt att iterera över en XPathNavigator samling med hjälp XPathNodeIterator av klassen.

Ett sätt är att använda MoveNext metoden och sedan anropa Current för att hämta den aktuella XPathNavigator instansen, som i följande exempel:

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

Ett annat sätt är att använda en foreach loop för att anropa GetEnumerator metoden och använda det returnerade IEnumerator gränssnittet för att räkna upp noderna, som i följande exempel:

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

Du bör antingen använda MoveNext och Current eller använda GetEnumerator. Att kombinera dessa två metoder kan orsaka oväntade resultat. Om MoveNext metoden till exempel anropas först och metoden GetEnumerator anropas i loopen foreach , börjar loopen foreach inte räkna upp resultaten från början av samlingen, utan från positionen efter Current metoden.

Anteckningar till implementerare

När du ärver från XPathNodeIterator klassen måste du åsidosätta följande medlemmar:

Konstruktorer

Name Description
XPathNodeIterator()

Initierar en ny instans av XPathNodeIterator klassen.

Egenskaper

Name Description
Count

Hämtar indexet för den sista noden i den valda uppsättningen noder.

Current

När det åsidosätts i en härledd klass hämtar objektet XPathNavigator för den här XPathNodeIterator, placerad på den aktuella kontextnoden.

CurrentPosition

När det åsidosättas i en härledd klass hämtar indexet för den aktuella positionen i den valda uppsättningen noder.

Metoder

Name Description
Clone()

När det åsidosättas i en härledd klass returnerar en klon av det här XPathNodeIterator objektet.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetEnumerator()

Returnerar ett IEnumerator objekt som ska iterera via den valda noduppsättningen.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MoveNext()

När det åsidosättas i en härledd klass flyttas objektet XPathNavigator som returneras av Current egenskapen till nästa nod i den valda noduppsättningen.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
ICloneable.Clone()

Skapar ett nytt objekt som är en kopia av den aktuella instansen.

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för