XmlNode.SelectNodes XmlNode.SelectNodes XmlNode.SelectNodes XmlNode.SelectNodes Method

定義

XPath 式と一致するノードのリストを選択します。Selects a list of nodes matching the XPath expression.

オーバーロード

SelectNodes(String) SelectNodes(String) SelectNodes(String) SelectNodes(String)

XPath 式と一致するノードのリストを選択します。Selects a list of nodes matching the XPath expression.

SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager)

XPath 式と一致するノードのリストを選択します。Selects a list of nodes matching the XPath expression. XPath 式で見つかったプリフィックスは、指定した XmlNamespaceManager を使用して解決されます。Any prefixes found in the XPath expression are resolved using the supplied XmlNamespaceManager.

注釈

XPath 式は名前空間を含むことができます。XPath expressions can include namespaces. 名前空間の解決は XmlNamespaceManager を使用してサポートされます。Namespace resolution is supported using the XmlNamespaceManager. XPath 式にプレフィックスが含まれている場合は、プレフィックスと名前空間 URI のペアXmlNamespaceManagerをに追加する必要があります。If the XPath expression includes a prefix, the prefix and namespace URI pair must be added to the XmlNamespaceManager.

注意

XPath 式にプレフィックスが含まれていない場合は、名前空間 URI が空の名前空間であると想定されます。If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. XML に既定の名前空間が含まれている場合でも、 XmlNamespaceManagerプレフィックスと名前空間 URI をに追加する必要があります。それ以外の場合、ノードは選択されません。If your XML includes a default namespace, you must still add a prefix and namespace URI to the XmlNamespaceManager; otherwise, you will not get any nodes selected.

詳細については、「 XPath ナビゲーションを使用してノードを選択する」を参照してください。For more information, see Select Nodes Using XPath Navigation. コード例については、前のセクションのオーバーロードの一覧からオーバーロードを選択してください。For code examples, choose an overload from the overload list in the previous section.

SelectNodes(String) SelectNodes(String) SelectNodes(String) SelectNodes(String)

XPath 式と一致するノードのリストを選択します。Selects a list of nodes matching the XPath expression.

public:
 System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath);
public System.Xml.XmlNodeList SelectNodes (string xpath);
member this.SelectNodes : string -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String) As XmlNodeList

パラメーター

xpath
String String String String

XPath 式。The XPath expression.

戻り値

XPath クエリと一致するノードのコレクションを格納している XmlNodeListAn XmlNodeList containing a collection of nodes matching the XPath query.

例外

XPath 式にプリフィックスが含まれています。The XPath expression contains a prefix. XPath の例」をご覧ください。See XPath Examples.

次の例では、著者の姓が Austen であるすべての書籍を選択し、それらの書籍の価格を変更します。The following example selects all books where the author's last name is Austen, and then changes the price of those books.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlDocument^ doc = gcnew XmlDocument;
   doc->Load( "booksort.xml" );
   XmlNodeList^ nodeList;
   XmlNode^ root = doc->DocumentElement;
   nodeList = root->SelectNodes( "descendant::book[author/last-name='Austen']" );
   
   //Change the price on the books.
   System::Collections::IEnumerator^ myEnum = nodeList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      XmlNode^ book = safe_cast<XmlNode^>(myEnum->Current);
      book->LastChild->InnerText = "15.95";
   }

   Console::WriteLine( "Display the modified XML document...." );
   doc->Save( Console::Out );
}

using System;
using System.IO;
using System.Xml;

public class Sample {

  public static void Main() {

    XmlDocument doc = new XmlDocument();
    doc.Load("booksort.xml");

    XmlNodeList nodeList;
    XmlNode root = doc.DocumentElement;

    nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']");
 
    //Change the price on the books.
    foreach (XmlNode book in nodeList)
    {
      book.LastChild.InnerText="15.95";
    }

    Console.WriteLine("Display the modified XML document....");
    doc.Save(Console.Out);
    
  }
}
Imports System
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

    'Create the XmlDocument.
    Dim doc as XmlDocument = new XmlDocument()
    doc.Load("booksort.xml")
           
    Dim book as XmlNode
    Dim nodeList as XmlNodeList 
    Dim root as XmlNode = doc.DocumentElement

    nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']")
 
    'Change the price on the books.
    for each book in nodeList      
      book.LastChild.InnerText="15.95"
    next 

    Console.WriteLine("Display the modified XML document....")
    doc.Save(Console.Out)
    
  end sub
end class

この例では、次の XML を使用します。This example uses the following XML:


<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
  <book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
    <title>Pride And Prejudice</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>24.95</price>
  </book>
  <book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
    <title>The Handmaid's Tale</title>
    <author>
      <first-name>Margaret</first-name>
      <last-name>Atwood</last-name>
    </author>
    <price>29.95</price>
  </book>
  <book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
    <title>Emma</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
  <book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
    <title>Sense and Sensibility</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
</bookstore>

注釈

XPath 式で名前空間を解決する必要がある場合SelectNodesは、引数とXmlNamespaceManagerしてを受け取るオーバーロードを使用する必要があります。If the XPath expression requires namespace resolution, you must use the SelectNodes overload which takes an XmlNamespaceManager as its argument. XmlNamespaceManager 、名前空間を解決するために使用されます。The XmlNamespaceManager is used to resolve namespaces.

注意

XPath 式にプレフィックスが含まれていない場合は、名前空間 URI が空の名前空間であると想定されます。If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. XML に既定の名前空間が含まれている場合でXmlNamespaceManagerも、を使用してプレフィックスと名前空間 URI を追加する必要があります。そうしないと、ノードは選択されません。If your XML includes a default namespace, you must still use the XmlNamespaceManager and add a prefix and namespace URI to it; otherwise, you will not get any nodes selected. 詳細については、「 XPath ナビゲーションを使用してノードを選択する」を参照してください。For more information, see Select Nodes Using XPath Navigation.

注意

XPath 式を定義するときの一般的な問題は、式に単一引用符 (') または二重引用符 (") を含める方法です。A common issue when formulating XPath expressions is how to include a single quote (') or double quote (") in the expression. 単一引用符で囲まれた値を検索する必要がある場合は、文字列を二重引用符で囲む必要があります。If you have to search for a value that includes a single quote, you must enclose the string in double quotes. 二重引用符を含む値を検索する必要がある場合は、文字列を単一引用符で囲む必要があります。If you need to search for a value that includes a double quote, you must enclose the string in single quotes.

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

<bookstore>  
  <book>  
    <title>&apos;Emma&apos;</title>  
  </book>  
</bookstore>  

次の Visual Basic コードは、単一引用符を含む要素を選択します。The following Visual Basic code selects an element that contains single quotes:

nodeList = root.SelectNodes("//book[contains(title,""'Emma'"")]")  

このメソッドは、ドキュメントオブジェクトモデル (DOM) の Microsoft 拡張機能です。This method is a Microsoft extension to the Document Object Model (DOM).

このメソッドによって返されるオブジェクトは、基になるドキュメントが変更されていないときに有効になります。XmlNodeListThe XmlNodeList object returned by this method will be valid while the underlying document remains unchanged. 基になるドキュメントが変更された場合、予期しない結果が返されることがあります (例外はスローされません)。If the underlying document changes, unexpected results may be returned (no exception will be thrown).

こちらもご覧ください

SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager) SelectNodes(String, XmlNamespaceManager)

XPath 式と一致するノードのリストを選択します。Selects a list of nodes matching the XPath expression. XPath 式で見つかったプリフィックスは、指定した XmlNamespaceManager を使用して解決されます。Any prefixes found in the XPath expression are resolved using the supplied XmlNamespaceManager.

public:
 System::Xml::XmlNodeList ^ SelectNodes(System::String ^ xpath, System::Xml::XmlNamespaceManager ^ nsmgr);
public System.Xml.XmlNodeList SelectNodes (string xpath, System.Xml.XmlNamespaceManager nsmgr);
member this.SelectNodes : string * System.Xml.XmlNamespaceManager -> System.Xml.XmlNodeList
Public Function SelectNodes (xpath As String, nsmgr As XmlNamespaceManager) As XmlNodeList

パラメーター

xpath
String String String String

XPath 式。The XPath expression. XPath の例」をご覧ください。See XPath Examples.

nsmgr
XmlNamespaceManager XmlNamespaceManager XmlNamespaceManager XmlNamespaceManager

XPath 式のプリフィックスの名前空間を解決するために使用する XmlNamespaceManagerAn XmlNamespaceManager to use for resolving namespaces for prefixes in the XPath expression.

戻り値

XPath クエリと一致するノードのコレクションを格納している XmlNodeListAn XmlNodeList containing a collection of nodes matching the XPath query.

例外

XPath 式に、XmlNamespaceManager で定義されていないプリフィックスが含まれています。The XPath expression contains a prefix which is not defined in the XmlNamespaceManager.

次の例では、それぞれの ISBN 属性の値を表示します。The following example displays the values of each of the ISBN attributes. この例ではXmlElementXmlNodeクラスを継承するオブジェクトを使用します。This example uses an XmlElement object, which inherits from the XmlNode class.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Collections;
int main()
{
   XmlDocument^ doc = gcnew XmlDocument;
   doc->Load( "booksort.xml" );
   
   // Create an XmlNamespaceManager for resolving namespaces.
   XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager( doc->NameTable );
   nsmgr->AddNamespace( "bk", "urn:samples" );
   
   // Select and display the value of all the ISBN attributes.
   XmlNodeList^ nodeList;
   XmlElement^ root = doc->DocumentElement;
   nodeList = root->SelectNodes( "/bookstore/book/@bk:ISBN", nsmgr );
   IEnumerator^ myEnum = nodeList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      XmlNode^ isbn = safe_cast<XmlNode^>(myEnum->Current);
      Console::WriteLine( isbn->Value );
   }
}

using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {

      XmlDocument doc = new XmlDocument();
      doc.Load("booksort.xml");

      //Create an XmlNamespaceManager for resolving namespaces.
      XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
      nsmgr.AddNamespace("bk", "urn:samples");

      //Select and display the value of all the ISBN attributes.
      XmlNodeList nodeList;
      XmlElement root = doc.DocumentElement;
      nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr);
      foreach (XmlNode isbn in nodeList){
        Console.WriteLine(isbn.Value);
      }

   }

}
Imports System
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

      Dim doc as XmlDocument = new XmlDocument()
      doc.Load("booksort.xml")

      'Create an XmlNamespaceManager for resolving namespaces.
      Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(doc.NameTable)
      nsmgr.AddNamespace("bk", "urn:samples")

      'Select and display the value of all the ISBN attributes.
      Dim nodeList as XmlNodeList 
      Dim root as XmlElement = doc.DocumentElement
      nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr)
      Dim isbn as XmlNode
      for each isbn in nodeList
        Console.WriteLine(isbn.Value)
      next

  end sub
end class

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


<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
  <book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
    <title>Pride And Prejudice</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>24.95</price>
  </book>
  <book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
    <title>The Handmaid's Tale</title>
    <author>
      <first-name>Margaret</first-name>
      <last-name>Atwood</last-name>
    </author>
    <price>29.95</price>
  </book>
  <book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
    <title>Emma</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
  <book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
    <title>Sense and Sensibility</title>
    <author>
      <first-name>Jane</first-name>
      <last-name>Austen</last-name>
    </author>
    <price>19.95</price>
  </book>
</bookstore>

注釈

XPath 式は名前空間を含むことができます。XPath expressions can include namespaces. 名前空間の解決は XmlNamespaceManager を使用してサポートされます。Namespace resolution is supported using the XmlNamespaceManager. XPath 式にプレフィックスが含まれている場合は、プレフィックスと名前空間 URI のペアXmlNamespaceManagerをに追加する必要があります。If the XPath expression includes a prefix, the prefix and namespace URI pair must be added to the XmlNamespaceManager.

注意

XPath 式にプレフィックスが含まれていない場合は、名前空間 URI が空の名前空間であると想定されます。If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. XML に既定の名前空間が含まれている場合でも、 XmlNamespaceManagerプレフィックスと名前空間 URI をに追加する必要があります。それ以外の場合、ノードは選択されません。If your XML includes a default namespace, you must still add a prefix and namespace URI to the XmlNamespaceManager; otherwise, you will not get any nodes selected. 詳細については、「 XPath ナビゲーションを使用してノードを選択する」を参照してください。For more information, see Select Nodes Using XPath Navigation.

たとえば、次の XML があるとします。For example, if you had the following XML:

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

次のC#コードは、すべての book ノードを選択します。The following C# code selects all book nodes:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);  
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");  
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);  

注意

XPath 式を定義するときの一般的な問題は、式に単一引用符 (') または二重引用符 (") を含める方法です。A common issue when formulating XPath expressions is how to include a single quote (') or double quote (") in the expression. 単一引用符で囲まれた値を検索する必要がある場合は、文字列を二重引用符で囲む必要があります。If you have to search for a value that includes a single quote, you must enclose the string in double quotes. 二重引用符を含む値を検索する必要がある場合は、文字列を単一引用符で囲む必要があります。If you need to search for a value that includes a double quote, you must enclose the string in single quotes.

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

<bookstore xmlns="http://www.lucernepublishing.com">  
  <book>  
    <title>&apos;Emma&apos;</title>  
  </book>  
</bookstore>  

次の Visual Basic コードは、単一引用符を含む要素を選択します。The following Visual Basic code selects an element that contains single quotes:

Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)  
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com")  
nodeList = root.SelectNodes("//ab:book[contains(ab:title,""'Emma'"")]", nsmgr)  

このメソッドは、ドキュメントオブジェクトモデル (DOM) の Microsoft 拡張機能です。This method is a Microsoft extension to the Document Object Model (DOM).

このメソッドによって返されるオブジェクトは、基になるドキュメントが変更されていないときに有効になります。XmlNodeListThe XmlNodeList object returned by this method will be valid while the underlying document remains unchanged. 基になるドキュメントが変更された場合、予期しない結果が返されることがあります (例外はスローされません)。If the underlying document changes, unexpected results may be returned (no exception will be thrown).

こちらもご覧ください

適用対象