Sdílet prostřednictvím


XPathNodeIterator Třída

Definice

Poskytuje iterátor nad vybranou sadou 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á Select metodu XPathNavigator třídy k výběru sady uzlů pomocí XPathNodeIterator třídy.

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

Příklad přebírá books.xml soubor 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ů. Volání MoveNext metody XPathNodeIterator třídy musí být provedeno pro umístění objektu XPathNodeIterator na prvním uzlu ve vybrané sadě uzlů.

Při použití XPathNodeIterator, pokud upravujete aktuální uzel nebo některý z jeho nadřazených objektů, vaše aktuální pozice bude ztracena. Pokud chcete upravit počet vybraných uzlů, vytvořte XPathNavigator pole, zkopírujte všechny uzly z XPathNodeIterator pole do pole a pak iterujte polem a upravte uzly.

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

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

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:

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 MoveNext a Current nebo použít GetEnumerator. Kombinace těchto dvou přístupů může způsobit neočekávané výsledky. Pokud je například MoveNext metoda volána jako první a metoda GetEnumerator je volána 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

Name Description
XPathNodeIterator()

Inicializuje novou instanci XPathNodeIterator třídy.

Vlastnosti

Name Description
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 tento 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

Name Description
Clone()

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

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

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

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

GetHashCode()

Slouží jako výchozí funkce hash.

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

Získá Type aktuální instance.

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

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

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

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

ToString()

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

(Zděděno od Object)

Explicitní implementace rozhraní

Name Description
ICloneable.Clone()

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

Metody rozšíření

Name Description
AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

OfType<TResult>(IEnumerable)

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

Platí pro