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