次の方法で共有


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

次の例では、クラスのメソッドをSelectXPathNavigator使用して、クラスを使用してノード セットをXPathNodeIterator選択します。

XPathDocument^ document = gcnew 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);
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 呼び出して、選択したノードセット XPathNodeIteratorXPathNodeIterator 最初のノードにオブジェクトを配置する必要があります。

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

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

1 つの方法は、次の例のように、メソッドをMoveNext使用し、現在のインスタンスをXPathNavigator取得するために呼び出Currentす方法です。

while (nodeIterator->MoveNext())
{
    XPathNavigator^ n = nodeIterator->Current;
Console::WriteLine(n->LocalName);
}
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 インターフェイスを使用してノードを列挙することです。

for each (XPathNavigator^ n in nodeIterator)
Console::WriteLine(n->LocalName);
foreach (XPathNavigator n in nodeIterator)
    Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
    Console.WriteLine(nav.LocalName)
Next

使用するかMoveNextCurrentGetEnumerator使用する必要があります。 これら 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()

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

拡張メソッド

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

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

AsParallel(IEnumerable)

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

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。

適用対象