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 到 陣列中,然後遍歷陣列並修改節點。
使用類別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方法先被呼叫,然後在迴圈中呼叫foreach該GetEnumerator方法,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 的專案。 |