XPathNodeIterator XPathNodeIterator XPathNodeIterator XPathNodeIterator Class

Определение

Обеспечивает итератор над выбранным набором узлов.Provides an iterator over a selected set of nodes.

public ref class XPathNodeIterator abstract : ICloneable, System::Collections::IEnumerable
public abstract class XPathNodeIterator : ICloneable, System.Collections.IEnumerable
type XPathNodeIterator = class
    interface ICloneable
    interface IEnumerable
Public MustInherit Class XPathNodeIterator
Implements ICloneable, IEnumerable
Наследование
XPathNodeIteratorXPathNodeIteratorXPathNodeIteratorXPathNodeIterator
Реализации

Примеры

В следующем примере используется Select метод XPathNavigator класс следует выбрать набор узлов, используя XPathNodeIterator класса.The following example uses the Select method of the XPathNavigator class to select a node set using the XPathNodeIterator class.

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

В примере в качестве входных данных используется файл books.xml.The example takes the books.xml file as input.


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

Комментарии

XPathNodeIterator Объект, возвращаемый XPathNavigator класса не расположен на первом узле в выбранном наборе узлов.An XPathNodeIterator object returned by the XPathNavigator class is not positioned on the first node in a selected set of nodes. Вызов MoveNext метод XPathNodeIterator класс необходимо сделать для размещения XPathNodeIterator объекта на первом узле в выбранном наборе узлов.A call to the MoveNext method of the XPathNodeIterator class must be made to position the XPathNodeIterator object on the first node in the selected set of nodes.

При использовании XPathNodeIterator, теряются при изменении текущего узла или его родительских элементов, текущая позиция.When using the XPathNodeIterator, if you edit the current node or any of its ancestors, your current position is lost. Если вы хотите изменить число узлов, выбранный вами, создайте XPathNavigator массива, скопируйте все узлы из XPathNodeIterator в массив, затем итерации в массиве и изменять узлы.If you want to edit a number of nodes that you have selected, create a XPathNavigator array, copy all of the nodes from the XPathNodeIterator into the array, then iterate through the array and modify the nodes.

Существует два способа для выполнения итерации по XPathNavigator коллекции с помощью XPathNodeIterator класса.There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.

Один из способов является использование MoveNext метод, а затем вызовите метод Current для получения текущего XPathNavigator экземпляра, как показано в следующем примере:One way is to use the MoveNext method and then call Current to get the current XPathNavigator instance, as in the following example:

   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

Другим способом является использование foreach цикл для вызова GetEnumerator метод и использование полученного IEnumerator интерфейс перечислить узлы, как показано в следующем примере:Another way is to use a foreach loop to call the GetEnumerator method and use the returned IEnumerator interface to enumerate the nodes, as in the following example:

   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

Следует использовать либо MoveNext и Current или использовать GetEnumerator.You should either use MoveNext and Current or use GetEnumerator. Объединение этих двух подходов может привести к непредвиденным результатам.Combining these two approaches can cause unexpected results. Например если MoveNext во-первых, вызывается метод и затем GetEnumerator метод вызывается в foreach цикл, foreach цикл не начнет перечисление результаты в начале коллекции, но начиная с позиции после Current метод.For example, if the MoveNext method is called first, and then the GetEnumerator method is called in the foreach loop, the foreach loop will not start enumerating the results from the beginning of the collection, but from the position after the Current method.

Примечания для тех, кто наследует этот метод

При наследовании от XPathNodeIterator класса, необходимо переопределить следующие члены:When you inherit from the XPathNodeIterator class, you must override the following members:

Конструкторы

XPathNodeIterator() XPathNodeIterator() XPathNodeIterator() XPathNodeIterator()

Инициализирует новый экземпляр класса XPathNodeIterator.Initializes a new instance of the XPathNodeIterator class.

Свойства

Count Count Count Count

Получает индекс последнего узла в выбранном наборе узлов.Gets the index of the last node in the selected set of nodes.

Current Current Current Current

При переопределении в производном классе получает объект XPathNavigator для данного XPathNodeIterator, который размещается в текущем контекстном узле.When overridden in a derived class, gets the XPathNavigator object for this XPathNodeIterator, positioned on the current context node.

CurrentPosition CurrentPosition CurrentPosition CurrentPosition

При переопределении в производном классе получает индекс текущей позиции в выбранном наборе узлов.When overridden in a derived class, gets the index of the current position in the selected set of nodes.

Методы

Clone() Clone() Clone() Clone()

При переопределении в производном классе возвращает клон объекта XPathNodeIterator.When overridden in a derived class, returns a clone of this XPathNodeIterator object.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Возвращает объект IEnumerator для итерации по выбранному набору узлов.Returns an IEnumerator object to iterate through the selected node set.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
MoveNext() MoveNext() MoveNext() MoveNext()

При переопределении в производном классе объект XPathNavigator, возвращенный свойством Current, перемещается в следующий узел выбранного набора узлов.When overridden in a derived class, moves the XPathNavigator object returned by the Current property to the next node in the selected node set.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

ICloneable.Clone() ICloneable.Clone() ICloneable.Clone() ICloneable.Clone()

Создает новый объект, являющийся копией текущего экземпляра.Creates a new object that is a copy of the current instance.

Методы расширения

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Преобразует IEnumerable для IQueryable.Converts an IEnumerable to an IQueryable.

Применяется к