XPathNodeIterator Classe

Definizione

Fornisce un iteratore su un set selezionato di nodi.Provides an iterator over a selected set of nodes.

public ref class XPathNodeIterator abstract : ICloneable, System::Collections::IEnumerable
public abstract class XPathNodeIterator : ICloneable, System.Collections.IEnumerable
type XPathNodeIterator = class
    interface ICloneable
    interface IEnumerable
Public MustInherit Class XPathNodeIterator
Implements ICloneable, IEnumerable
Ereditarietà
XPathNodeIterator
Implementazioni

Esempi

Nell'esempio seguente viene utilizzato Select il metodo XPathNavigator della classe per selezionare un set di nodi utilizzando XPathNodeIterator la classe.The following example uses the Select method of the XPathNavigator class to select a node set using the XPathNodeIterator class.

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

Nell'esempio il file books.xml viene considerato come input.The example takes the books.xml file as 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 XPathNavigator dalla classe non è posizionato sul primo nodo di un set di nodi selezionato.An XPathNodeIterator object returned by the XPathNavigator class is not positioned on the first node in a selected set of nodes. È necessario effettuare una MoveNext chiamata al metodo XPathNodeIterator della classe per posizionare l' XPathNodeIterator oggetto sul primo nodo nel set di nodi selezionato.A call to the MoveNext method of the XPathNodeIterator class must be made to position the XPathNodeIterator object on the first node in the selected set of nodes.

Quando si usa XPathNodeIterator, se si modifica il nodo corrente o uno dei relativi predecessori, la posizione corrente viene persa.When using the XPathNodeIterator, if you edit the current node or any of its ancestors, your current position is lost. Se si desidera modificare un numero di nodi selezionati, creare una XPathNavigator matrice, copiare tutti i nodi XPathNodeIterator da nell'array, quindi scorrere la matrice e modificare i nodi.If you want to edit a number of nodes that you have selected, create a XPathNavigator array, copy all of the nodes from the XPathNodeIterator into the array, then iterate through the array and modify the nodes.

Esistono due modi per eseguire l'iterazione XPathNavigator di una raccolta usando XPathNodeIterator la classe.There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.

Un modo consiste nell'usare il MoveNext metodo e quindi chiamare Current per ottenere l'istanza XPathNavigator corrente, come nell'esempio seguente:One way is to use the MoveNext method and then call Current to get the current XPathNavigator instance, as in the following example:

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

Un altro modo consiste nell'usare foreach un ciclo per chiamare GetEnumerator il metodo e usare l' IEnumerator interfaccia restituita per enumerare i nodi, come nell'esempio seguente:Another way is to use a foreach loop to call the GetEnumerator method and use the returned IEnumerator interface to enumerate the nodes, as in the following example:

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

È consigliabile usare MoveNext e Current o usare GetEnumerator.You should either use MoveNext and Current or use GetEnumerator. La combinazione di questi due approcci può causare risultati imprevisti.Combining these two approaches can cause unexpected results. Se, ad esempio, MoveNext il metodo viene chiamato per primo e il GetEnumerator foreach metodo viene chiamato nel ciclo, il foreach ciclo non inizierà a enumerare i risultati dall'inizio della raccolta, ma dalla posizione successiva al Current metodo.For example, if the MoveNext method is called first, and then the GetEnumerator method is called in the foreach loop, the foreach loop will not start enumerating the results from the beginning of the collection, but from the position after the Current method.

Note per gli implementatori

Quando si eredita dalla XPathNodeIterator classe, è necessario eseguire l'override dei membri seguenti:When you inherit from the XPathNodeIterator class, you must override the following members:

Costruttori

XPathNodeIterator()

Inizializza una nuova istanza della classe XPathNodeIterator.Initializes a new instance of the XPathNodeIterator class.

Proprietà

Count

Ottiene l'indice dell'ultimo nodo del set di nodi selezionato.Gets the index of the last node in the selected set of nodes.

Current

Quando sottoposto a override in una classe derivata, ottiene l'oggetto XPathNavigator per questo XPathNodeIterator, posizionato sul nodo contesto corrente.When overridden in a derived class, gets the XPathNavigator object for this XPathNodeIterator, positioned on the current context node.

CurrentPosition

Quando sottoposto a override in una classe derivata, ottiene l'indice della posizione corrente nel set di nodi selezionato.When overridden in a derived class, gets the index of the current position in the selected set of nodes.

Metodi

Clone()

Quando sottoposto a override in una classe derivata, restituisce un clone di questo oggetto XPathNodeIterator.When overridden in a derived class, returns a clone of this XPathNodeIterator object.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetEnumerator()

Restituisce un oggetto IEnumerator con cui scorrere l'insieme di nodi selezionato.Returns an IEnumerator object to iterate through the selected node set.

GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
MoveNext()

Quando sottoposto a override in una classe derivata, sposta l'oggetto XPathNavigator restituito dalla proprietà Current sul nodo di testo nell'insieme di nodi selezionato.When overridden in a derived class, moves the XPathNavigator object returned by the Current property to the next node in the selected node set.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ICloneable.Clone()

Crea un nuovo oggetto che è una copia dell'istanza corrente.Creates a new object that is a copy of the current instance.

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.Enables parallelization of a query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.Converts an IEnumerable to an IQueryable.

Si applica a