XPathNavigator.Select XPathNavigator.Select XPathNavigator.Select XPathNavigator.Select Method

定義

指定された XPath 式を使用して、ノード セットを選択します。Selects a node set, using the specified XPath expression.

オーバーロード

Select(String) Select(String) Select(String) Select(String)

指定された XPath 式を使用して、ノード セットを選択します。Selects a node set, using the specified XPath expression.

Select(XPathExpression) Select(XPathExpression) Select(XPathExpression) Select(XPathExpression)

指定した XPathExpression を使用して、ノード セットを選択します。Selects a node set using the specified XPathExpression.

Select(String, IXmlNamespaceResolver) Select(String, IXmlNamespaceResolver) Select(String, IXmlNamespaceResolver) Select(String, IXmlNamespaceResolver)

名前空間プレフィックスを解決するように指定された IXmlNamespaceResolver オブジェクトと共に指定した XPath 式を使用して、ノード セットを選択します。Selects a node set using the specified XPath expression with the IXmlNamespaceResolver object specified to resolve namespace prefixes.

Select(String) Select(String) Select(String) Select(String)

指定された XPath 式を使用して、ノード セットを選択します。Selects a node set, using the specified XPath expression.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::String ^ xpath);
public virtual System.Xml.XPath.XPathNodeIterator Select (string xpath);
abstract member Select : string -> System.Xml.XPath.XPathNodeIterator
override this.Select : string -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (xpath As String) As XPathNodeIterator

パラメーター

xpath
String String String String

XPath 式を表す StringA String representing an XPath expression.

戻り値

選択されたノード セットを指している XPathNodeIteratorAn XPathNodeIterator pointing to the selected node set.

例外

XPath 式にエラーが含まれているか、またはその戻り値の型がノード セットではありません。The XPath expression contains an error or its return type is not a node set.

XPath 式が無効です。The XPath expression is not valid.

次の例ではSelect 、メソッドを使用して、ノードセットを選択します。The following example uses the Select method to select a node set.

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 an 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>  
  

注釈

選択範囲のコンテキストは、 XPathNavigatorこのメソッドが呼び出されたときのの位置です。The context for the selection is the position of the XPathNavigator when this method is called. このメソッドを呼び出した後XPathNodeIterator 、返されるは選択されたノードのセットを表します。After calling this method, the XPathNodeIterator returned represents the set of selected nodes. のメソッドMoveNextを使用して、選択したノードセットを反復処理します。 XPathNodeIteratorUse MoveNext method of the XPathNodeIterator to iterate over the selected node set.

次C#のコードは、選択したノードセットに対して反復処理を行います。The following C# code iterates over the selected set of nodes.

XPathNodeIterator iterator = nav.Select("/bookstore/book");  
while (iterator.MoveNext())  
{  
    Console.WriteLine(Iterator.Current.Name);  
}  

ここでは、 Selectメソッドを使用する際に考慮する必要がある重要な注意事項について説明します。The following are important notes to consider when using the Select method.

  • XPathNavigatorオブジェクトのナビゲーションメソッドを使用してXPathNavigator内で移動することもできます。You can still use any of the XPathNavigator object's navigation methods to move within the XPathNavigator. ナビゲーションメソッドは、 XPathNodeIterator内の選択したノードに依存しません。 XPathNavigatorThe XPathNavigator navigation methods are independent of the selected nodes in the XPathNodeIterator.

  • 今後のメソッドのSelect呼び出しでは、 XPathNodeIterator新しいSelect呼び出しに一致する選択したノードセットを指す新しいオブジェクトが返されます。Future calls to the Select method return a new XPathNodeIterator object that points to the selected set of nodes that matches the new Select call. 2つXPathNodeIteratorのオブジェクトは、相互に完全に独立しています。The two XPathNodeIterator objects are completely independent of each other.

  • XPath 式で名前空間を解決する必要がSelectある場合は、引数XPathExpressionとしてを受け取るオーバーロードを使用します。If the XPath expression requires namespace resolution, use the Select overload, which takes an XPathExpression as its argument.

  • このメソッドは、 XPathNavigatorの状態には影響しません。This method has no effect on the state of the XPathNavigator.

こちらもご覧ください

Select(XPathExpression) Select(XPathExpression) Select(XPathExpression) Select(XPathExpression)

指定した XPathExpression を使用して、ノード セットを選択します。Selects a node set using the specified XPathExpression.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::Xml::XPath::XPathExpression ^ expr);
public virtual System.Xml.XPath.XPathNodeIterator Select (System.Xml.XPath.XPathExpression expr);
abstract member Select : System.Xml.XPath.XPathExpression -> System.Xml.XPath.XPathNodeIterator
override this.Select : System.Xml.XPath.XPathExpression -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (expr As XPathExpression) As XPathNodeIterator

パラメーター

expr
XPathExpression XPathExpression XPathExpression XPathExpression

コンパイル済みの XPath クエリが格納されている XPathExpression オブジェクト。An XPathExpression object containing the compiled XPath query.

戻り値

選択されたノード セットを指している XPathNodeIteratorAn XPathNodeIterator that points to the selected node set.

例外

XPath 式にエラーが含まれているか、またはその戻り値の型がノード セットではありません。The XPath expression contains an error or its return type is not a node set.

XPath 式が無効です。The XPath expression is not valid.

次の例ではSelect 、メソッドを使用して、ノードセットを選択します。The following example uses the Select method to select a node set.

XPathDocument^ document = gcnew XPathDocument("books.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XPathExpression^ query = navigator->Compile("/bookstore/book");
XPathNodeIterator^ nodes = navigator->Select(query);
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();

XPathExpression query = navigator.Compile("/bookstore/book");
XPathNodeIterator nodes = navigator.Select(query);
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 query As XPathExpression = navigator.Compile("/bookstore/book")
Dim nodes As XPathNodeIterator = navigator.Select(query)
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 an 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>  
  

注釈

選択範囲のコンテキストは、 XPathNavigatorこのメソッドを呼び出したときのの位置です。The context for the selection is the position of the XPathNavigator when you called this method. このメソッドを呼び出すと、 XPathNodeIterator返されるは選択されたノードのセットを表します。After you call this method, the XPathNodeIterator returned represents the set of selected nodes. MoveNextXPathNodeIterator選択したノードセットを反復処理するために使用します。Use MoveNext on the XPathNodeIterator to iterate over the selected node set.

次C#のコードは、選択したノードセットに対して反復処理を行います。The following C# code iterates over the selected set of nodes.

XPathNodeIterator ni = nav.Select(expr);  
while (ni.MoveNext())  
{  
    Console.WriteLine(ni.Current.Name);  
}  

ここでは、 Selectメソッドを使用する際に考慮する必要がある重要な注意事項について説明します。The following are important notes to consider when using the Select method.

たとえば、ドキュメントに次の XML ノードが含まれているとします。For example, suppose the document contains the following XML nodes.

<bookstore xmlns:bk='urn:samples'>  
    <book bk:ISBN='1-325-0980'>  
        <title>Pride And Prejudice</title>  
    </book>  
</bookstore>  

この場合、次C#のコードはノードをbk:ISBN選択します。In this case, the following C# code selects the bk:ISBN node.

XPathExpression expr = nav.Compile("book/@bk:ISBN");  
XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable());  
mngr.AddNamespace("bk","urn:samples");  
expr.SetContext(mngr);  
XPathNodeIterator ni = nav.Select(expr);  

注意

XPathExpressionプレフィックスが含まれていない場合は、名前空間 URI が空の名前空間であると見なされます。If the XPathExpression does not include a prefix, it is assumed that the namespace URI is the empty namespace. XML に既定の名前空間が含まれている場合でSetContextも、メソッドをXmlNamespaceManager使用し、既定の名前空間を処理するプレフィックスと名前空間 URI を含むを指定する必要があります。If your XML includes a default namespace, you must still use the SetContext method and provide an XmlNamespaceManager that contains a prefix and namespace URI to handle the default namespace.

たとえば、次のような XML があるとします。For example, suppose you have the following XML.

<bookstore xmlns="http://www.lucernepublishing.com">  
    <book>  
        <title>Pride And Prejudice</title>  
    </book>  
</bookstore>  

この場合、次C#のコードはすべての book ノードを選択します。In this case, the following C# code selects all book nodes:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(nav.NameTable);  
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");  
XPathExpression expr;  
expr = nav.Compile("//ab:book");  
expr.SetContext(nsmgr);  
XPathNodeIterator ni = nav.Select(expr);  

このメソッドは、 XPathNavigatorの状態には影響しません。This method has no effect on the state of the XPathNavigator.

こちらもご覧ください

Select(String, IXmlNamespaceResolver) Select(String, IXmlNamespaceResolver) Select(String, IXmlNamespaceResolver) Select(String, IXmlNamespaceResolver)

名前空間プレフィックスを解決するように指定された IXmlNamespaceResolver オブジェクトと共に指定した XPath 式を使用して、ノード セットを選択します。Selects a node set using the specified XPath expression with the IXmlNamespaceResolver object specified to resolve namespace prefixes.

public:
 virtual System::Xml::XPath::XPathNodeIterator ^ Select(System::String ^ xpath, System::Xml::IXmlNamespaceResolver ^ resolver);
public virtual System.Xml.XPath.XPathNodeIterator Select (string xpath, System.Xml.IXmlNamespaceResolver resolver);
abstract member Select : string * System.Xml.IXmlNamespaceResolver -> System.Xml.XPath.XPathNodeIterator
override this.Select : string * System.Xml.IXmlNamespaceResolver -> System.Xml.XPath.XPathNodeIterator
Public Overridable Function Select (xpath As String, resolver As IXmlNamespaceResolver) As XPathNodeIterator

パラメーター

xpath
String String String String

XPath 式を表す StringA String representing an XPath expression.

resolver
IXmlNamespaceResolver IXmlNamespaceResolver IXmlNamespaceResolver IXmlNamespaceResolver

名前空間プレフィックスの解決に使用する IXmlNamespaceResolver オブジェクト。The IXmlNamespaceResolver object used to resolve namespace prefixes.

戻り値

選択されたノード セットを指している XPathNodeIteratorAn XPathNodeIterator that points to the selected node set.

例外

XPath 式にエラーが含まれているか、またはその戻り値の型がノード セットではありません。The XPath expression contains an error or its return type is not a node set.

XPath 式が無効です。The XPath expression is not valid.

次の例は、XPath 式の名前空間Selectプレフィックスを解決XmlNamespaceManagerするためにオブジェクトを指定したメソッドを使用して、ノードセットを選択する方法を示しています。The following example illustrates selecting a node set using the Select method with the XmlNamespaceManager object specified to resolve namespace prefixes in the XPath expression.

XPathDocument^ document = gcnew XPathDocument("contosoBooks.xml");
XPathNavigator^ navigator = document->CreateNavigator();

XmlNamespaceManager^ manager = gcnew XmlNamespaceManager(navigator->NameTable);
manager->AddNamespace("bk", "http://www.contoso.com/books");

XPathNodeIterator^ nodes = navigator->Select("/bk:bookstore/bk:book/bk:price", manager);
// Move to the first node bk:price node.
if(nodes->MoveNext())
{
    // Now nodes.Current points to the first selected node.
XPathNavigator^ nodesNavigator = nodes->Current;

    // Select all the descendants of the current price node.
XPathNodeIterator^ nodesText = nodesNavigator->SelectDescendants(XPathNodeType::Text, false);

    while(nodesText->MoveNext())
    {
Console::WriteLine(nodesText->Current->Value);
    }
}
XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");

XPathNodeIterator nodes = navigator.Select("/bk:bookstore/bk:book/bk:price", manager);
// Move to the first node bk:price node
if(nodes.MoveNext())
{
    // now nodes.Current points to the first selected node
    XPathNavigator nodesNavigator = nodes.Current;

    //select all the descendants of the current price node
    XPathNodeIterator nodesText = 
       nodesNavigator.SelectDescendants(XPathNodeType.Text, false);

    while(nodesText.MoveNext())
    {
       Console.WriteLine(nodesText.Current.Value);
    }
}
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()

Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")

Dim nodes As XPathNodeIterator = navigator.Select("/bk:bookstore/bk:book/bk:price", manager)
' Move to the first node bk:price node.
If (nodes.MoveNext()) Then
    ' Now nodes.Current points to the first selected node.
    Dim nodesNavigator As XPathNavigator = nodes.Current

    ' Select all the descendants of the current price node.
    Dim nodesText As XPathNodeIterator = nodesNavigator.SelectDescendants(XPathNodeType.Text, False)

    While nodesText.MoveNext()
        Console.WriteLine(nodesText.Current.Value)
    End While
End If

この例は、contosoBooks.xml ファイルを入力として使用します。The example takes the contosoBooks.xml file as an input.

  
<?xml version="1.0" encoding="utf-8" ?>  
<bookstore xmlns="http://www.contoso.com/books">  
    <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>  
  

適用対象