XPathNodeIterator Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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. |