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. 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. 접두사 및 네임 스페이스 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이거나, 일치하는 노드가 없는 경우에는 null입니다.The first XmlNode that matches the XPath query or null if no matching node is found.

예외

XPath 식에 접두사가 포함되어 있는 경우The XPath expression contains a prefix.

예제

다음 예제에서는 첫 번째 Jane Austen 책의 가격을 변경합니다.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 식의 접두사에 대한 네임스페이스를 확인하기 위해 사용할 XmlNamespaceManager입니다.An XmlNamespaceManager to use for resolving namespaces for prefixes in the XPath expression.

반환

XPath 쿼리와 일치하는 첫 번째 XmlNode이거나, 일치하는 노드가 없는 경우에는 null입니다.The 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. 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. 접두사 및 네임 스페이스 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).

추가 정보

적용 대상