XPathNodeIterator Classe

Definição

Fornece um iterador sobre um conjunto selecionado de nós.

public ref class XPathNodeIterator abstract : ICloneable
public ref class XPathNodeIterator abstract : ICloneable, System::Collections::IEnumerable
public abstract class XPathNodeIterator : ICloneable
public abstract class XPathNodeIterator : ICloneable, System.Collections.IEnumerable
type XPathNodeIterator = class
    interface ICloneable
type XPathNodeIterator = class
    interface ICloneable
    interface IEnumerable
type XPathNodeIterator = class
    interface IEnumerable
    interface ICloneable
Public MustInherit Class XPathNodeIterator
Implements ICloneable
Public MustInherit Class XPathNodeIterator
Implements ICloneable, IEnumerable
Herança
XPathNodeIterator
Implementações

Exemplos

O exemplo seguinte utiliza o Select método da XPathNavigator classe para selecionar um conjunto de nós usando a 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

O exemplo usa o arquivo books.xml como entrada.

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

Observações

Um objeto devolvido XPathNodeIterator pela XPathNavigator classe não está posicionado no primeiro nó de um conjunto selecionado de nós. Deve ser feita uma chamada ao MoveNext método da XPathNodeIterator classe para posicionar o XPathNodeIterator objeto no primeiro nó do conjunto selecionado de nós.

Ao usar o XPathNodeIterator, se editar o nó atual ou qualquer um dos seus antecessores, a sua posição atual perde-se. Se quiseres editar vários nós que selecionaste, cria um XPathNavigator array, copia todos os nós do XPathNodeIterator para o array, depois itera pelo array e modifica os nós.

Existem duas formas de iterar sobre uma XPathNavigator coleção usando a XPathNodeIterator classe.

Uma forma é usar o MoveNext método e depois chamar Current para obter a instância atual XPathNavigator , como no seguinte exemplo:

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

Outra forma é usar um foreach loop para chamar o GetEnumerator método e usar a interface retornada IEnumerator para enumerar os nós, como no seguinte exemplo:

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

Deves usar MoveNext e Current /ou usar GetEnumerator. Combinar estas duas abordagens pode causar resultados inesperados. Por exemplo, se o MoveNext método for chamado primeiro, e depois o GetEnumerator método for chamado no foreach ciclo, o foreach ciclo não começará a enumerar os resultados desde o início da coleção, mas sim pela posição após o Current método.

Notas para Implementadores

Quando herdas da XPathNodeIterator classe, deves sobrepor os seguintes membros:

Construtores

Name Description
XPathNodeIterator()

Inicializa uma nova instância da XPathNodeIterator classe.

Propriedades

Name Description
Count

Obtém o índice do último nó do conjunto selecionado de nós.

Current

Quando sobrescrito numa classe derivada, obtém o XPathNavigator objeto para esta XPathNodeIterator, posicionado no nó de contexto atual.

CurrentPosition

Quando sobrescrito numa classe derivada, obtém-se o índice da posição atual no conjunto selecionado de nós.

Métodos

Name Description
Clone()

Quando sobrescrito numa classe derivada, devolve um clone deste XPathNodeIterator objeto.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetEnumerator()

Devolve um IEnumerator objeto para iterar pelo conjunto de nós selecionado.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MoveNext()

Quando sobrescrito numa classe derivada, move o XPathNavigator objeto devolvido pela Current propriedade para o próximo nó no conjunto de nós selecionado.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
ICloneable.Clone()

Cria um novo objeto que é uma cópia da instância atual.

Métodos da Extensão

Name Description
AsParallel(IEnumerable)

Permite a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable para um IQueryable.

Cast<TResult>(IEnumerable)

Conjura os elementos de an IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base num tipo especificado.

Aplica-se a