XPathNodeIterator XPathNodeIterator XPathNodeIterator XPathNodeIterator Class

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à
XPathNodeIteratorXPathNodeIteratorXPathNodeIteratorXPathNodeIterator
Implementazioni

Esempi

L'esempio seguente usa il Select metodo per il XPathNavigator classe per selezionare un set di nodi usando il XPathNodeIterator 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 dal XPathNavigator classe non è posizionata sul primo nodo in 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. Una chiamata al MoveNext metodo per il XPathNodeIterator classe deve essere apportata per posizionare il XPathNodeIterator oggetto nel 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 il XPathNodeIterator, se si modifica il nodo corrente o uno qualsiasi dei suoi predecessori, la posizione corrente verrà 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 selezionato, creare un XPathNavigator matrice, copiare tutti i nodi dal XPathNodeIterator nella matrice, quindi eseguire l'iterazione attraverso 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 su un XPathNavigator raccolta utilizzando il XPathNodeIterator classe.There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.

Un modo consiste nell'usare la MoveNext metodo e quindi chiamare Current per ottenere l'oggetto corrente XPathNavigator istanza, 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 un foreach ciclo per chiamare il GetEnumerator metodo e usare l'oggetto restituito IEnumerator interfaccia 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

È necessario utilizzare MoveNext e Current oppure 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. Ad esempio, se il MoveNext viene chiamato prima di tutto e quindi il GetEnumerator viene chiamato foreach ciclo, il foreach ciclo non inizierà a enumerare i risultati dall'inizio della raccolta, ma dalla posizione dopo il 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 eredi

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

Costruttori

XPathNodeIterator() XPathNodeIterator() XPathNodeIterator() XPathNodeIterator()

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

Proprietà

Count Count Count 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 Current Current 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 CurrentPosition CurrentPosition 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() Clone() Clone() 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) Equals(Object) Equals(Object) Equals(Object)

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

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() 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() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from Object)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
MoveNext() MoveNext() MoveNext() 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() ToString() ToString() ToString()

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

(Inherited from Object)

Implementazioni dell'interfaccia esplicita

ICloneable.Clone() ICloneable.Clone() ICloneable.Clone() 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) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) 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) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) 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) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

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

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

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

Si applica a