XPathNodeIterator Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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. |