XPathNodeIterator クラス

定義

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

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 ます。The 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クラスによって返されたオブジェクト XPathNavigator は、選択されたノードセットの最初のノードに配置されていません。An 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.

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

1つは、メソッドを使用 MoveNext し、 Current 次の例のようにを呼び出して現在のインスタンスを取得する方法です XPathNavigatorOne 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 Current GetEnumerator ます。You 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

派生クラスでオーバーライドされると、現在のコンテキスト ノードに位置する、この XPathNodeIteratorXPathNavigator オブジェクトを取得します。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()

派生クラスでオーバーライドされると、Current プロパティによって返された XPathNavigator オブジェクトを、選択されたノード セットにおける次のノードに移動させます。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.

適用対象