XPathNodeIterator Třída

Definice

Poskytuje iterátor pro vybranou sadu uzlů.

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
Dědičnost
XPathNodeIterator
Implementuje

Příklady

Následující příklad používá metodu SelectXPathNavigator třídy k výběru sady uzlů pomocí XPathNodeIterator třídy.

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

V příkladu se books.xml soubor používá jako vstup.

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

Poznámky

Objekt XPathNodeIterator vrácený XPathNavigator třídou není umístěn na prvním uzlu ve vybrané sadě uzlů. Je třeba provést volání MoveNext metody XPathNodeIterator třídy, aby se objekt umístil XPathNodeIterator na první uzel ve vybrané sadě uzlů.

Pokud při použití nástroje XPathNodeIteratorupravíte aktuální uzel nebo některý z jeho předchůdců, aktuální pozice se ztratí. Pokud chcete upravit několik uzlů, které jste vybrali, vytvořte XPathNavigator pole, zkopírujte všechny uzly z XPathNodeIterator pole do pole, pak iterujte polem a upravte uzly.

Existují dva způsoby, jak iterovat XPathNavigator kolekci XPathNodeIterator pomocí třídy.

Jedním ze způsobů je použít metodu MoveNext a pak voláním Current získat aktuální XPathNavigator instanci, jako v následujícím příkladu:

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

Dalším způsobem je použití foreach smyčky k volání GetEnumerator metody a použití vráceného IEnumerator rozhraní k vytvoření výčtu uzlů, jako v následujícím příkladu:

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

Měli byste použít MoveNextCurrent a nebo použít GetEnumerator. Kombinace těchto dvou přístupů může způsobit neočekávané výsledky. Pokud je například MoveNext volána metoda první a pak GetEnumerator je volána metoda ve foreach smyčce, foreach smyčka nezačne výčet výsledků od začátku kolekce, ale z pozice za metodou Current .

Poznámky pro implementátory

Když dědíte z XPathNodeIterator třídy, musíte přepsat následující členy:

Konstruktory

XPathNodeIterator()

Inicializuje novou instanci XPathNodeIterator třídy.

Vlastnosti

Count

Získá index posledního uzlu ve vybrané sadě uzlů.

Current

Při přepsání v odvozené třídě získá XPathNavigator objekt pro tuto XPathNodeIterator, umístěný na aktuálním kontextovém uzlu.

CurrentPosition

Při přepsání v odvozené třídě získá index aktuální pozice ve vybrané sadě uzlů.

Metody

Clone()

Při přepsání v odvozené třídě vrátí klon tohoto XPathNodeIterator objektu.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetEnumerator()

Vrátí objekt, který IEnumerator má iterovat vybranou sadu uzlů.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
MoveNext()

Při přepsání v odvozené třídě přesune XPathNavigator objekt vrácený Current vlastností do dalšího uzlu ve vybrané sadě uzlů.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

ICloneable.Clone()

Vytváří nový objekt, který je kopií aktuální instance.

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky objektu na IEnumerable zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky objektu IEnumerable na základě zadaného typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede objekt na IEnumerableIQueryable.

Platí pro