Compartilhar via


XPathNodeIterator Classe

Definição

Fornece um iterador em um conjunto de nós selecionados.

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
Herança
XPathNodeIterator
Implementações

Exemplos

O exemplo a seguir usa o Select método da XPathNavigator classe para selecionar um conjunto de nós usando a XPathNodeIterator classe.

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

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>  

Comentários

Um XPathNodeIterator objeto retornado pela XPathNavigator classe não é posicionado no primeiro nó em um conjunto selecionado de nós. Uma chamada para o MoveNext método da XPathNodeIterator classe deve ser feita para posicionar o XPathNodeIterator objeto no primeiro nó no conjunto de nós selecionado.

Ao usar o XPathNodeIteratornó , se você editar o nó atual ou qualquer um de seus ancestrais, sua posição atual será perdida. Se você quiser editar vários nós que selecionou, crie uma XPathNavigator matriz, copie todos os nós da XPathNodeIterator matriz e, em seguida, itere pela matriz e modifique os nós.

Há duas maneiras de iterar em uma XPathNavigator coleção usando a XPathNodeIterator classe.

Uma maneira é usar o MoveNext método e, em seguida, chamar Current para obter a instância atual XPathNavigator , como no exemplo a seguir:

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

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

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

Você deve usar MoveNext e Current ou usar GetEnumerator. Combinar essas duas abordagens pode causar resultados inesperados. Por exemplo, se o MoveNext método for chamado primeiro e, em seguida, o GetEnumerator método for chamado no foreach loop, o foreach loop não começará a enumerar os resultados desde o início da coleção, mas da posição após o Current método.

Notas aos Implementadores

Ao herdar da XPathNodeIterator classe, você deve substituir os seguintes membros:

Construtores

XPathNodeIterator()

Inicializa uma nova instância da classe XPathNodeIterator.

Propriedades

Count

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

Current

Quando substituído em uma classe derivada, obtém o objeto XPathNavigator dpara este XPathNodeIterator, posicionado no nó do contexto atual.

CurrentPosition

Quando substituído em uma classe derivada, obtém o índice da posição atual no conjunto de nós selecionado.

Métodos

Clone()

Quando substituído em uma classe derivada, retorna um clone deste objeto XPathNodeIterator.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetEnumerator()

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

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MoveNext()

Quando substituído em uma classe derivada, move o objeto XPathNavigator retornado pela propriedade Current para o nó seguinte no conjunto de nós selecionados.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

ICloneable.Clone()

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

Métodos de Extensão

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

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

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

Aplica-se a