XPathNodeIterator Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |