共用方式為


XPathNodeIterator 類別

定義

在選取的一組節點上提供反覆運算器。

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 到 陣列中,然後遍歷陣列並修改節點。

使用類別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方法先被呼叫,然後在迴圈中呼叫foreachGetEnumerator方法,foreach迴圈不會從集合開始列舉結果,而是從方法之後Current的位置開始。

給實施者的注意事項

當你從該類別繼 XPathNodeIterator 承時,必須覆蓋以下成員:

建構函式

名稱 Description
XPathNodeIterator()

初始化 XPathNodeIterator 類別的新執行個體。

屬性

名稱 Description
Count

取得所選節點集合中最後一個節點的索引。

Current

當在派生類別中被覆寫時,會得到XPathNavigatorXPathNodeIterator該物件,位於目前上下文節點上。

CurrentPosition

當在派生類別中覆寫時,會得到所選節點集合中當前位置的索引。

方法

名稱 Description
Clone()

當在衍生類別中覆寫時,會回傳該 XPathNodeIterator 物件的克隆。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetEnumerator()

回傳一個 IEnumerator 物件,讓它遍歷所選節點集合。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
MoveNext()

當在派生類別中覆寫時,會將該屬性回傳Current的物件移動XPathNavigator到所選節點集合中的下一個節點。

ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

明確介面實作

名稱 Description
ICloneable.Clone()

建立一個新的物件,該物件是目前實例的複製品。

擴充方法

名稱 Description
AsParallel(IEnumerable)

啟用查詢的平行處理。

AsQueryable(IEnumerable)

IEnumerable 轉換成 IQueryable

Cast<TResult>(IEnumerable)

IEnumerable 的項目轉換成指定的型別。

OfType<TResult>(IEnumerable)

根據指定的型別篩選 IEnumerable 的專案。

適用於