Partilhar via


XPathNodeIterator Classe

Definição

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

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 XPathNavigator seguir usa o Select método da 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 books.xml arquivo 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 está 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 selecionados, crie uma XPathNavigator matriz, copie todos os nós da XPathNodeIterator matriz e 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()
    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:

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

Nome Description
XPathNodeIterator()

Inicializa uma nova instância da classe XPathNodeIterator.

Propriedades

Nome Description
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 XPathNavigator objeto para isso XPathNodeIterator, posicionado no nó de 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

Nome Description
Clone()

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

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetEnumerator()

Retorna um IEnumerator objeto para iterar por meio do 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 Objectatual.

(Herdado de Object)
MoveNext()

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

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
ICloneable.Clone()

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

Métodos de Extensão

Nome Description
AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

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.

Aplica-se a