XPathNodeIterator 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为所选的一组节点提供迭代器。
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
- 继承
-
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 数组复制到该数组中,然后循环访问该数组并修改节点。
使用类循环访问 XPathNavigator 集合 XPathNodeIterator 有两种方法。
一种方法是使用 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 和使用 CurrentGetEnumerator。 结合这两种方法可能会导致意外结果。 例如,如果 MoveNext 首先调用该方法,然后在 GetEnumerator 循环中 foreach 调用该方法,则 foreach 循环不会从集合的开头开始枚举结果,而是从方法之后 Current 的位置开始枚举结果。
实施者说明
从 XPathNodeIterator 类继承时,必须重写以下成员:
构造函数
| 名称 | 说明 |
|---|---|
| XPathNodeIterator() |
初始化 XPathNodeIterator 类的新实例。 |
属性
| 名称 | 说明 |
|---|---|
| Count |
获取所选节点集中最后一个节点的索引。 |
| Current |
在派生类中重写时,获取 XPathNavigator 位于当前上下文节点上的此 XPathNodeIterator对象。 |
| CurrentPosition |
在派生类中重写时,获取所选节点集中当前位置的索引。 |
方法
| 名称 | 说明 |
|---|---|
| Clone() |
在派生类中重写时,返回此 XPathNodeIterator 对象的克隆。 |
| Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
| GetEnumerator() |
返回一个 IEnumerator 对象以循环访问所选节点集。 |
| GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| MoveNext() |
在派生类中重写时,将XPathNavigatorCurrent属性返回的对象移到所选节点集中的下一个节点。 |
| ToString() |
返回一个表示当前对象的字符串。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| ICloneable.Clone() |
创建一个新对象,该对象是当前实例的副本。 |
扩展方法
| 名称 | 说明 |
|---|---|
| AsParallel(IEnumerable) |
启用查询的并行化。 |
| AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |
| Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定类型。 |
| OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |