XPathNodeIterator クラス

定義

選択したノード セットに対する反復子を提供します。Provides an iterator over a selected set of nodes.

public ref class XPathNodeIterator abstract : ICloneable, System::Collections::IEnumerable
public abstract class XPathNodeIterator : ICloneable, System.Collections.IEnumerable
type XPathNodeIterator = class
    interface ICloneable
    interface IEnumerable
Public MustInherit Class XPathNodeIterator
Implements ICloneable, IEnumerable
継承
XPathNodeIterator
実装

クラスSelect XPathNodeIteratorのメソッドを使用して、クラスを使用してノードセットを選択する例を次に示します。 XPathNavigatorThe following example uses the Select method of the XPathNavigator class to select a node set using the XPathNodeIterator class.

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 ファイルを入力として使用します。The example takes the books.xml file as input.

  
<?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 XPathNavigatorAn XPathNodeIterator object returned by the XPathNavigator class is not positioned on the first node in a selected set of nodes. 選択したノードMoveNextセットの最初XPathNodeIteratorのノードにXPathNodeIteratorオブジェクトを配置するには、クラスのメソッドを呼び出す必要があります。A call to the MoveNext method of the XPathNodeIterator class must be made to position the XPathNodeIterator object on the first node in the selected set of nodes.

を使用XPathNodeIteratorする場合、現在のノードまたはその先祖のいずれかを編集すると、現在の位置は失われます。When using the XPathNodeIterator, if you edit the current node or any of its ancestors, your current position is lost. 選択した複数のノードを編集する場合は、 XPathNavigator配列を作成し、 XPathNodeIteratorからすべてのノードを配列にコピーしてから、配列を反復処理してノードを変更します。If you want to edit a number of nodes that you have selected, create a XPathNavigator array, copy all of the nodes from the XPathNodeIterator into the array, then iterate through the array and modify the nodes.

クラスを使用してXPathNavigatorコレクションを反復処理するには、 XPathNodeIterator 2 つの方法があります。There are two ways to iterate over an XPathNavigator collection by using the XPathNodeIterator class.

1つは、 MoveNextメソッドを使用し、次の例のようにを呼び出しCurrentて現在XPathNavigatorのインスタンスを取得する方法です。One way is to use the MoveNext method and then call Current to get the current XPathNavigator instance, as in the following example:

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ループを使用してメソッドを呼び出し、返されたインターフェイスを使用してノードを列挙する方法です。Another way is to use a foreach loop to call the GetEnumerator method and use the returned IEnumerator interface to enumerate the nodes, as in the following example:

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

またはを使用MoveNextするか、 GetEnumeratorを使用する必要があります。 CurrentYou should either use MoveNext and Current or use GetEnumerator. この2つの方法を組み合わせると、予期しない結果が発生する可能性があります。Combining these two approaches can cause unexpected results. たとえば、 MoveNextメソッドが最初に呼び出されたGetEnumerator後、そのforeachメソッドがループforeach内で呼び出された場合、ループは、コレクションの先頭からの結果の列挙を開始しませんが、Currentメソッド。For example, if the MoveNext method is called first, and then the GetEnumerator method is called in the foreach loop, the foreach loop will not start enumerating the results from the beginning of the collection, but from the position after the Current method.

注意 (継承者)

XPathNodeIteratorクラスから継承する場合は、次のメンバーをオーバーライドする必要があります。When you inherit from the XPathNodeIterator class, you must override the following members:

コンストラクター

XPathNodeIterator()

XPathNodeIterator クラスの新しいインスタンスを初期化します。Initializes a new instance of the XPathNodeIterator class.

プロパティ

Count

選択したノード セットの最後のノードのインデックスを取得します。Gets the index of the last node in the selected set of nodes.

Current

派生クラスでオーバーライドされると、現在のコンテキスト ノードに配置されている、この XPathNavigator に対する XPathNodeIterator オブジェクトを取得します。When overridden in a derived class, gets the XPathNavigator object for this XPathNodeIterator, positioned on the current context node.

CurrentPosition

派生クラスでオーバーライドされると、選択したノード セットの現在の位置のインデックスを取得します。When overridden in a derived class, gets the index of the current position in the selected set of nodes.

メソッド

Clone()

派生クラスでオーバーライドされた場合、この XPathNodeIterator オブジェクトの複製を返します。When overridden in a derived class, returns a clone of this XPathNodeIterator object.

Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetEnumerator()

選択したノード セットを反復処理する IEnumerator オブジェクトを返します。Returns an IEnumerator object to iterate through the selected node set.

GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
MoveNext()

派生クラスでオーバーライドされた場合、XPathNavigator プロパティによって返された Current オブジェクトを、選択したノード セットの次のノードへ移動します。When overridden in a derived class, moves the XPathNavigator object returned by the Current property to the next node in the selected node set.

ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

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

ICloneable.Clone()

現在のインスタンスのコピーである新しいオブジェクトを作成します。Creates a new object that is a copy of the current instance.

拡張メソッド

Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

クエリの並列化を有効にします。Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。Converts an IEnumerable to an IQueryable.

適用対象