Condividi tramite


XPathNodeIterator Classe

Definizione

Fornisce un iteratore su un set selezionato di nodi.

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
Ereditarietà
XPathNodeIterator
Implementazioni

Esempio

Nell'esempio seguente viene usato il Select metodo della XPathNavigator classe per selezionare un set di nodi usando la XPathNodeIterator classe .

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

L'esempio accetta il file books.xml come input.

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

Commenti

Un XPathNodeIterator oggetto restituito dalla XPathNavigator classe non è posizionato sul primo nodo di un set selezionato di nodi. È necessario effettuare una chiamata al MoveNext metodo della XPathNodeIterator classe per posizionare l'oggetto XPathNodeIterator sul primo nodo del set di nodi selezionato.

Quando si usa XPathNodeIterator, se si modifica il nodo corrente o uno dei relativi predecessori, la posizione corrente viene persa. Se si vuole modificare un numero di nodi selezionati, creare una XPathNavigator matrice, copiare tutti i nodi da XPathNodeIterator nella matrice, quindi scorrere la matrice e modificare i nodi.

Esistono due modi per scorrere una XPathNavigator raccolta usando la XPathNodeIterator classe .

Un modo consiste nell'usare il MoveNext metodo e quindi chiamare Current per ottenere l'istanza corrente XPathNavigator , come nell'esempio seguente:

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

Un altro modo consiste nell'usare un foreach ciclo per chiamare il GetEnumerator metodo e usare l'interfaccia restituita IEnumerator per enumerare i nodi, come nell'esempio seguente:

foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next

È consigliabile usare MoveNext e Current o usare GetEnumerator. La combinazione di questi due approcci può causare risultati imprevisti. Ad esempio, se il MoveNext metodo viene chiamato per primo e quindi il GetEnumerator metodo viene chiamato nel foreach ciclo , il foreach ciclo non inizierà ad enumerare i risultati dall'inizio della raccolta, ma dalla posizione dopo il Current metodo .

Note per gli implementatori

Quando si eredita dalla XPathNodeIterator classe , è necessario eseguire l'override dei membri seguenti:

Costruttori

Nome Descrizione
XPathNodeIterator()

Inizializza una nuova istanza della classe XPathNodeIterator.

Proprietà

Nome Descrizione
Count

Ottiene l'indice dell'ultimo nodo nel set di nodi selezionato.

Current

Quando sottoposto a override in una classe derivata, ottiene l'oggetto XPathNavigator per questo XPathNodeIteratoroggetto , posizionato sul nodo di contesto corrente.

CurrentPosition

Quando sottoposto a override in una classe derivata, ottiene l'indice della posizione corrente nel set selezionato di nodi.

Metodi

Nome Descrizione
Clone()

Quando sottoposto a override in una classe derivata, restituisce un clone di questo XPathNodeIterator oggetto.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetEnumerator()

Restituisce un IEnumerator oggetto per scorrere il set di nodi selezionato.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MoveNext()

Quando sottoposto a override in una classe derivata, sposta l'oggetto XPathNavigator restituito dalla Current proprietà al nodo successivo nel set di nodi selezionato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
ICloneable.Clone()

Crea un nuovo oggetto che rappresenta una copia dell'istanza corrente.

Metodi di estensione

Nome Descrizione
AsParallel(IEnumerable)

Abilita la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un IEnumerable in un IQueryable.

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un IEnumerable al tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un IEnumerable in base a un tipo specificato.

Si applica a