次の方法で共有


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
実装

次の例では、XPathNavigator クラスのSelect メソッドを使用して、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>

注釈

XPathNavigator クラスによって返されるXPathNodeIterator オブジェクトは、選択した一連のノードの最初のノードに配置されません。 XPathNodeIterator クラスの MoveNext メソッドを呼び出して、選択したノード セットの最初のノードにXPathNodeIterator オブジェクトを配置する必要があります。

XPathNodeIteratorを使用する場合、現在のノードまたはその先祖を編集すると、現在の位置が失われます。 選択した多数のノードを編集する場合は、 XPathNavigator 配列を作成し、 XPathNodeIterator のすべてのノードを配列にコピーしてから、配列を反復処理してノードを変更します。

XPathNodeIterator クラスを使用して、XPathNavigator コレクションを反復処理する方法は 2 つあります。

1 つの方法は、次の例のように、 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

もう 1 つの方法は、次の例のように、 foreach ループを使用して GetEnumerator メソッドを呼び出し、返された IEnumerator インターフェイスを使用してノードを列挙することです。

foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next

MoveNextCurrentを使用するか、GetEnumeratorを使用する必要があります。 これら 2 つの方法を組み合わせると、予期しない結果が発生する可能性があります。 たとえば、 MoveNext メソッドが最初に呼び出され、 GetEnumerator メソッドが foreach ループで呼び出された場合、 foreach ループはコレクションの先頭から、 Current メソッドの後の位置から結果の列挙を開始しません。

注意 (実装者)

XPathNodeIterator クラスから継承する場合は、次のメンバーをオーバーライドする必要があります。

コンストラクター

名前 説明
XPathNodeIterator()

XPathNodeIterator クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
Count

選択したノード セット内の最後のノードのインデックスを取得します。

Current

派生クラスでオーバーライドされると、現在のコンテキスト ノードに配置された、このXPathNodeIteratorXPathNavigator オブジェクトを取得します。

CurrentPosition

派生クラスでオーバーライドされると、選択したノード セット内の現在位置のインデックスを取得します。

メソッド

名前 説明
Clone()

派生クラスでオーバーライドされると、この XPathNodeIterator オブジェクトの複製を返します。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetEnumerator()

選択したノード セットを反復処理する IEnumerator オブジェクトを返します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
MoveNext()

派生クラスでオーバーライドされると、Current プロパティによって返されたXPathNavigator オブジェクトを、選択したノード セット内の次のノードに移動します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
ICloneable.Clone()

現在のインスタンスのコピーである新しいオブジェクトを作成します。

拡張メソッド

名前 説明
AsParallel(IEnumerable)

クエリの並列化を有効にします。

AsQueryable(IEnumerable)

IEnumerableIQueryableに変換します。

Cast<TResult>(IEnumerable)

IEnumerable の要素を指定した型にキャストします。

OfType<TResult>(IEnumerable)

指定した型に基づいて、IEnumerable の要素をフィルター処理します。

適用対象