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. 접두사 및 네임 스페이스 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. 코드 예를 들어 이전 섹션에서 오버 로드 목록에서 오버 로드를 선택 합니다.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 쿼리와 일치하는 노드의 컬렉션이 포함된 XmlNodeList입니다.An 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).

XmlNodeList 기본 문서 그대로 유지 하는 동안이 메서드에서 반환 된 개체는 잘못 됩니다.The XmlNodeList object returned by this method will be valid while the underlying document remains unchanged. 예기치 않은 결과가 반환 될 수 있습니다 기본 문서 변경 되 면 (예외가 throw 됩니다).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 식의 접두사에 대한 네임스페이스를 확인하기 위해 사용할 XmlNamespaceManager입니다.An XmlNamespaceManager to use for resolving namespaces for prefixes in the XPath expression.

반환

Xpath 쿼리와 일치하는 노드의 컬렉션이 포함된 XmlNodeList입니다.An 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. 사용 하 여이 예제는 XmlElement 에서 상속 되는 개체는 XmlNode 클래스입니다.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. 접두사 및 네임 스페이스 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.

예를 들어, 다음 XML을 설치한 경우:For example, if you had the following XML:

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

다음 C# 코드는 모든 책 노드를 선택합니다.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).

XmlNodeList 기본 문서 그대로 유지 하는 동안이 메서드에서 반환 된 개체는 잘못 됩니다.The XmlNodeList object returned by this method will be valid while the underlying document remains unchanged. 예기치 않은 결과가 반환 될 수 있습니다 기본 문서 변경 되 면 (예외가 throw 됩니다).If the underlying document changes, unexpected results may be returned (no exception will be thrown).

추가 정보

적용 대상