XmlNode.SelectSingleNode XmlNode.SelectSingleNode XmlNode.SelectSingleNode XmlNode.SelectSingleNode Method

定義

XPath 式と一致する最初の XmlNode を選択します。Selects the first XmlNode that matches the XPath expression.

オーバーロード

SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String)

XPath 式と一致する最初の XmlNode を選択します。Selects the first XmlNode that matches the XPath expression.

SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager)

XPath 式と一致する最初の XmlNode を選択します。Selects the first XmlNode that matches the XPath expression. XPath 式で見つかったプリフィックスは、指定した XmlNamespaceManager を使用して解決されます。Any prefixes found in the XPath expression are resolved using the supplied XmlNamespaceManager.

次の例では、作成者の名前が一致する最初の書籍を返します。The following example returns the first book with the matching author name. XmlNamespaceManager は XPath 式中の既定の名前空間を解決します。The XmlNamespaceManager resolves the default namespace in the XPath expression.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlDocument^ doc = gcnew XmlDocument;
   doc->Load( L"newbooks.xml" );
   
   // Create an XmlNamespaceManager to resolve the default namespace.
   XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager( doc->NameTable );
   nsmgr->AddNamespace( L"bk", L"urn:newbooks-schema" );
   
   // Select the first book written by an author whose last name is Atwood.
   XmlNode^ book;
   XmlElement^ root = doc->DocumentElement;
   book = root->SelectSingleNode( L"descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr );
   Console::WriteLine( book->OuterXml );
   return 0;
}

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

public class Sample
{
  public static void Main()
  {

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

      // Create an XmlNamespaceManager to resolve the default namespace.
      XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
      nsmgr.AddNamespace("bk", "urn:newbooks-schema");

      // Select the first book written by an author whose last name is Atwood.
      XmlNode book;
      XmlElement root = doc.DocumentElement;
     book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr);

      Console.WriteLine(book.OuterXml);

  }
}
Imports System
Imports System.IO
Imports System.Xml

Public Class Sample

  Public Shared Sub Main()

      Dim doc As XmlDocument = New XmlDocument()
      doc.Load("newbooks.xml")

      'Create an XmlNamespaceManager for resolving namespaces.
      Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
      nsmgr.AddNamespace("bk", "urn:newbooks-schema")

      'Select the book written by an author whose last name is Atwood.
      Dim book As XmlNode 
      Dim root As XmlElement = doc.DocumentElement
      book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr)

      Console.WriteLine(book.OuterXml)

  End Sub
End Class

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

<?xml version='1.0'?>
<bookstore xmlns="urn:newbooks-schema">
  <book genre="novel" style="hardcover">
    <title>The Handmaid's Tale</title>
    <author>
      <first-name>Margaret</first-name>
      <last-name>Atwood</last-name>
    </author>
    <price>19.95</price>
  </book>
  <book genre="novel" style="other">
    <title>The Poisonwood Bible</title>
    <author>
      <first-name>Barbara</first-name>
      <last-name>Kingsolver</last-name>
    </author>
    <price>11.99</price>
  </book>
</bookstore>

注釈

XPath 式は名前空間を含むことができます。XPath expressions can include namespaces. 名前空間の解決は XmlNamespaceManager を使用してサポートされます。Namespace resolution is supported using the XmlNamespaceManager. プレフィックスと名前空間 URI のペアを追加する必要があります、XPath 式には、プレフィックスが含まれている場合、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. プレフィックスと名前空間 URI を追加する必要がありますが、XML には、既定の名前空間が含まれている場合に、 XmlNamespaceManager。 そうしないと、選択した任意のノードは表示されません。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.

SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String) SelectSingleNode(String)

XPath 式と一致する最初の XmlNode を選択します。Selects the first XmlNode that matches the XPath expression.

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

パラメーター

xpath
String String String String

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

戻り値

XPath クエリと一致する最初の XmlNode。一致するノードが見つからない場合は nullThe first XmlNode that matches the XPath query or null if no matching node is found.

例外

XPath 式にプリフィックスが含まれています。The XPath expression contains a prefix.

次の例では、最初のジェーン オースティンの書籍の価格を変更します。The following example changes the price of the first Jane Austen book.

#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" );
   XmlNode^ book;
   XmlNode^ root = doc->DocumentElement;
   book = root->SelectSingleNode( "descendant::book[author/last-name='Austen']" );
   
   //Change the price on the book.
   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");

    XmlNode book;
    XmlNode root = doc.DocumentElement;

    book=root.SelectSingleNode("descendant::book[author/last-name='Austen']");
 
    //Change the price on the book.
    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 root as XmlNode = doc.DocumentElement

    book=root.SelectSingleNode("descendant::book[author/last-name='Austen']")
 
    'Change the price on the book.
    book.LastChild.InnerText="15.95"

    Console.WriteLine("Display the modified XML document....")
    doc.Save(Console.Out)
    
  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 式は、名前空間の解決を必要とする場合、SelectSingleNodeオーバー ロードの受け取り、XmlNamespaceManager引数として。If the XPath expression requires namespace resolution, you must use the SelectSingleNode 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 a selected node. 詳細については、次を参照してください。 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:

book = root.SelectSingleNode("descendant::book[title=""'Emma'""]")  

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

こちらもご覧ください

SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager) SelectSingleNode(String, XmlNamespaceManager)

XPath 式と一致する最初の XmlNode を選択します。Selects the first XmlNode that matches the XPath expression. XPath 式で見つかったプリフィックスは、指定した XmlNamespaceManager を使用して解決されます。Any prefixes found in the XPath expression are resolved using the supplied XmlNamespaceManager.

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

パラメーター

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 クエリと一致する最初の XmlNode。一致するノードが見つからない場合は nullThe first XmlNode that matches the XPath query or null if no matching node is found.

例外

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

次の例では、ISBN 値が一致する書籍を選択します。The following example selects the book with the matching ISBN value.

#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" );
   
   //Create an XmlNamespaceManager for resolving namespaces.
   XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager( doc->NameTable );
   nsmgr->AddNamespace( "bk", "urn:samples" );
   
   //Select the book node with the matching attribute value.
   XmlNode^ book;
   XmlElement^ root = doc->DocumentElement;
   book = root->SelectSingleNode( "descendant::book->Item[@bk:ISBN='1-861001-57-6']", nsmgr );
   Console::WriteLine( book->OuterXml );
}

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 the book node with the matching attribute value.
      XmlNode book;
      XmlElement root = doc.DocumentElement;
      book = root.SelectSingleNode("descendant::book[@bk:ISBN='1-861001-57-6']", nsmgr);

      Console.WriteLine(book.OuterXml);

  }
}
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 the book node with the matching attribute value.
      Dim book as XmlNode 
      Dim root as XmlElement = doc.DocumentElement
      book = root.SelectSingleNode("descendant::book[@bk:ISBN='1-861001-57-6']", nsmgr)

      Console.WriteLine(book.OuterXml)

  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. プレフィックスと名前空間 URI のペアを追加する必要があります、XPath 式には、プレフィックスが含まれている場合、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. プレフィックスと名前空間 URI を追加する必要がありますが、XML には、既定の名前空間が含まれている場合に、 XmlNamespaceManager。 そうしないと、選択したノードは表示されません。If your XML includes a default namespace, you must still add a prefix and namespace URI to the XmlNamespaceManager; otherwise, you will not get a node 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 the first book node:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);  
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");  
XmlNode book = doc.SelectSingleNode("//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")  
book = root.SelectSingleNode("descendant::ab:book[ab:title=""'Emma'""]", nsmgr)  

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

こちらもご覧ください

適用対象