XPathNodeIterator 类  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在选定节点集上提供一个迭代器。
public ref class XPathNodeIterator abstract : ICloneable, System::Collections::IEnumerablepublic ref class XPathNodeIterator abstract : System::Collections::IEnumerablepublic ref class XPathNodeIterator abstract : ICloneablepublic abstract class XPathNodeIterator : ICloneable, System.Collections.IEnumerablepublic abstract class XPathNodeIterator : System.Collections.IEnumerablepublic abstract class XPathNodeIterator : ICloneabletype XPathNodeIterator = class
    interface IEnumerable
    interface ICloneabletype XPathNodeIterator = class
    interface IEnumerabletype XPathNodeIterator = class
    interface ICloneabletype XPathNodeIterator = class
    interface ICloneable
    interface IEnumerablePublic MustInherit Class XPathNodeIterator
Implements ICloneable, IEnumerablePublic MustInherit Class XPathNodeIterator
Implements IEnumerablePublic MustInherit Class XPathNodeIterator
Implements ICloneable- 继承
- 
				XPathNodeIterator
- 实现
示例
以下示例使用 Select 类的 XPathNavigator 方法选择使用 XPathNodeIterator 类的节点集。
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 文件作为输入。
<?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的对象未定位在所选节点集中的第一个节点上。 必须调用 MoveNext 类的 XPathNodeIterator 方法,才能将 XPathNodeIterator 对象定位在所选节点集中的第一个节点上。
使用 时, XPathNodeIterator如果编辑当前节点或其任何上级,则当前位置将丢失。 如果要编辑已选择的节点数,请创建一个 XPathNavigator 数组,将所有节点从 XPathNodeIterator 复制到数组中,然后循环访问该数组并修改节点。
有XPathNodeIterator两种方法可以使用 类循环访问XPathNavigator集合。
一种方法是使用 MoveNext 方法,然后调用 Current 以获取当前 XPathNavigator 实例,如以下示例所示:
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 接口枚举节点,如以下示例所示:
foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next
应使用 MoveNext 和 Current 或使用 GetEnumerator。 结合使用这两种方法可能会导致意外结果。 例如,如果 MoveNext 先调用 方法,然后在 GetEnumerator 循环中 foreach 调用 该方法,则 foreach 循环不会从集合的开头开始枚举结果,而是从方法后 Current 的位置开始枚举结果。
实施者说明
从 XPathNodeIterator 类继承时,必须重写以下成员:
构造函数
| XPathNodeIterator() | 初始化 XPathNodeIterator 类的新实例。 | 
属性
| Count | 获取所选节点集中最后一个节点的索引。 | 
| Current | 在派生类中重写时,获取此 XPathNodeIterator的 XPathNavigator 对象,它定位在当前上下文节点上。 | 
| CurrentPosition | 当在派生的类中重写时,获取所选节点集中当前位置的索引。 | 
方法
| Clone() | 当在派生类中重写时,返回此 XPathNodeIterator 对象的复本。 | 
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| GetEnumerator() | 返回 IEnumerator 对象以循环访问所选的节点集。 | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| MoveNext() | 在派生类中重写时,将 Current 属性返回的 XPathNavigator 对象移至选定节点集中的下一个节点。 | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) | 
显式接口实现
| ICloneable.Clone() | 创建作为当前实例副本的新对象。 | 
扩展方法
| Cast<TResult>(IEnumerable) | 将 IEnumerable 的元素强制转换为指定的类型。 | 
| OfType<TResult>(IEnumerable) | 根据指定类型筛选 IEnumerable 的元素。 | 
| AsParallel(IEnumerable) | 启用查询的并行化。 | 
| AsQueryable(IEnumerable) | 将 IEnumerable 转换为 IQueryable。 |