XPathNodeIterator XPathNodeIterator XPathNodeIterator XPathNodeIterator Class

Definición

Proporciona un iterador para un conjunto seleccionado de nodos.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
Herencia
XPathNodeIteratorXPathNodeIteratorXPathNodeIteratorXPathNodeIterator
Implementaciones

Ejemplos

En el ejemplo siguiente se usa el Select método de la XPathNavigator clase para seleccionar un conjunto de nodos mediante la XPathNodeIterator clase.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

En el ejemplo se toma como entrada el archivo books.xml.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>  

Comentarios

Un XPathNodeIterator objeto devuelto por la XPathNavigator clase no está situada en el primer nodo en un conjunto de nodos seleccionado.An XPathNodeIterator object returned by the XPathNavigator class is not positioned on the first node in a selected set of nodes. Una llamada a la MoveNext método de la XPathNodeIterator clase debe realizarse para colocar la XPathNodeIterator objeto en el primer nodo en el conjunto de nodos seleccionado.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.

Cuando se usa el XPathNodeIterator, si edita el nodo actual o cualquiera de sus antecesores, su posición actual se pierde.When using the XPathNodeIterator, if you edit the current node or any of its ancestors, your current position is lost. Si desea editar un número de nodos que ha seleccionado, cree un XPathNavigator de matriz, copie todos los nodos desde el XPathNodeIterator en la matriz, a continuación, recorrer en iteración la matriz y modificar los nodos.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.

Hay dos maneras para recorrer en iteración un XPathNavigator colección utilizando el XPathNodeIterator clase.There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.

Es una manera de usar el MoveNext método y, después, llame Current obtener actual XPathNavigator instancia, como en el ejemplo siguiente: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

Otra manera es usar un foreach bucle para llamar a la GetEnumerator método y use el valor devuelto IEnumerator interfaz para enumerar los nodos, como en el ejemplo siguiente: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

Debería usar MoveNext y Current o use GetEnumerator.You should either use MoveNext and Current or use GetEnumerator. Combinación de estos dos métodos puede producir resultados inesperados.Combining these two approaches can cause unexpected results. Por ejemplo, si el MoveNext se llama al método en primer lugar y, a continuación, el GetEnumerator se llama al método el foreach bucle, la foreach bucle no iniciará de enumerar los resultados desde el principio de la colección, pero desde la posición tras el Current método.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.

Notas a los desarrolladores de herederos

Al heredar de la XPathNodeIterator (clase), debe reemplazar los miembros siguientes:When you inherit from the XPathNodeIterator class, you must override the following members:

Constructores

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

Inicializa una nueva instancia de la clase XPathNodeIterator.Initializes a new instance of the XPathNodeIterator class.

Propiedades

Count Count Count Count

Obtiene el índice del último nodo del conjunto de nodos seleccionado.Gets the index of the last node in the selected set of nodes.

Current Current Current Current

Cuando se reemplaza en una clase derivada, obtiene el objeto XPathNavigator correspondiente a este objeto XPathNodeIterator, que se sitúa en el nodo de contexto actual.When overridden in a derived class, gets the XPathNavigator object for this XPathNodeIterator, positioned on the current context node.

CurrentPosition CurrentPosition CurrentPosition CurrentPosition

Cuando se reemplaza en una clase derivada, se obtiene el índice de la posición actual en el conjunto de nodos seleccionado.When overridden in a derived class, gets the index of the current position in the selected set of nodes.

Métodos

Clone() Clone() Clone() Clone()

Cuando se reemplaza en una clase derivada, devuelve un clon de este objeto XPathNodeIterator.When overridden in a derived class, returns a clone of this XPathNodeIterator object.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Devuelve un objeto IEnumerator para recorrer en iteración el conjunto de nodos seleccionado.Returns an IEnumerator object to iterate through the selected node set.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
MoveNext() MoveNext() MoveNext() MoveNext()

Cuando se reemplaza en una clase derivada, desplaza el objeto XPathNavigator devuelto por la propiedad Current hasta el siguiente nodo del conjunto seleccionado.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()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

ICloneable.Clone() ICloneable.Clone() ICloneable.Clone() ICloneable.Clone()

Crea un nuevo objeto copiado de la instancia actual.Creates a new object that is a copy of the current instance.

Extension Methods

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Habilita la paralelización de una consulta.Enables parallelization of a query.

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

Convierte una interfaz IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Se aplica a