XPathNodeIterator Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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. |