System.Xml.XPath 클래스 사용 방법 XPath 쿼리 실행

기술 자료 번역 기술 자료 번역
기술 자료: 317069 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 .NET 응용 프로그램에서 XPath 쿼리를 실행할 수 System.Xml.XPath 네임스페이스에서 클래스를 사용하는 방법을 보여 줍니다.

System.Xml.XPath 네임스페이스 탐색

System.Xml.XPath 네임스페이스 XPath 파서 및 .NET Framework의 계산 엔진이 포함되어 있습니다. World Wide Web 컨소시엄 (W3C) XML 경로 언어 (XPath) 버전 1.0 권장을 System.Xml.XPath 네임스페이스가 지원합니다. XPath 권장에 대한 자세한 내용은 다음 W3C 웹 사이트를 방문하십시오.
XML Path Language (XPath) Version 1.0
또한 System.Xml.XPath 네임스페이스 XPath 쿼리를 실행하고 생성된 결과 프로그래밍 방식으로 탐색할 수 있도록 최적화된 다음 클래스가 포함되어 있습니다.
  • XPathDocument: A 고성능 읽기 - XML 문서 및 스트림을 처리하는 경우에만 캐시. XPathDocument 확장 가능한 스타일시트 언어 변환(XSLT) 처리 및 XPath 데이터 모델을 최적화할 수 있습니다. XPathDocument 문서 개체 모델 (DOM)-(원본 XML 메모리 내 트리 구조로 로드하고) 구문 분석 모델을 기반으로 사용하지만 삽입하려면, 수정하려면, 또는 확장 태그 언어 (XML) 문서 또는 스트림에 노드를 삭제하려면 필요한 인터페이스를 구현하지 않습니다.
  • XPathNavigator: 이 클래스는 XPath 데이터 모델을 기반으로 합니다. XPathNavigatorXPathDocument 로드할 XML 데이터에 대해 XPath 쿼리를 실행하는 데 필요한 메서드를 제공합니다. XPathNavigatorXPathDocument 개체의 CreateNavigator 메서드를 사용하여 인스턴스화됩니다. XPathNavigator 자주 실행되는 XPath 쿼리 식은 컴파일하고 컴파일된 쿼리를 캡슐화하는 System.Xml.XPath.XPathExpression 개체를 생성할 수 있습니다.
  • XPathNodeIterator: 전달 - 전용, 읽기 - 유일한 반복기를 제공합니다. XPathNavigator 개체 Select 메서드를 사용하여 XPath 쿼리를 실행할 때 XPathNodeIterator 인스턴스를 만듭니다. XPathNodeIterator XPath 쿼리에서 생성된 결과 집합을 탐색할 수 있습니다.
  • XPathExpression: 컴파일된 XPath 쿼리 식 캡슐화합니다. 쿼리 식을 실행하기 전에 XPath 쿼리 식을 컴파일해야 합니다. 컴파일된 XPath 식을 W3C XPath 쿼리 언어 사양에 맞지 확인된 구문이 포함되어 있습니다. XPathNavigator 개체 컴파일 메서드 호출하여 XPathExpression 클래스를 반환합니다. 일반적으로 미리 컴파일된 XPath 쿼리 식에서 Select 메서드 호출하여 XPathNavigator 개체의 제공하려면 XPathExpression을 사용합니다.
  • XPathException: XPath 쿼리 식을 처리하는 동안 오류가 발생할 때 생성되는 경우 .NET Framework 예외입니다. Select 메서드 및 XPathNavigator 클래스의 컴파일 메서드를 XPathException을 발생시킬 수 있습니다.

예제 XML 문서 만들기

후속 .NET 코드 샘플을 사용하려면 두 샘플 XML 문서를 만들려면 다음과 같이 하십시오.
  1. Books.xml이 명명된 사용 메모장 또는 유사한 텍스트 편집기를 새 XML 문서에서 다음 코드를 붙여 넣습니다. 하드 디스크의 루트 폴더에 있는 문서를 저장합니다.
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. DotNetBooks.xml이 명명된 사용 메모장 또는 유사한 텍스트 편집기를 새 XML 문서에서 다음 코드를 붙여 넣습니다. 하드 디스크의 루트 폴더에 있는 문서를 저장합니다.
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

Visual Basic .NET 프로젝트 만들기

  1. Visual Studio .NET을 시작하고 새 Visual Basic .NET Windows 응용 프로그램 프로젝트를 만듭니다.
  2. 두 개의 단추 컨트롤을 도구 상자에서 Form1.vb로 끕니다.
  3. 첫 번째 명령 단추 Click_Event 프로시저에서 다음 코드를 붙여:
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. 코드의 기능을 이해하기 위한 인라인 주석 읽습니다. 코드를 인스턴스화하고 System.Xml.XPath 네임스페이스에 있는 개체 인스턴스를 각 클래스를 사용하는 특정 주의를 기울여야 합니다. 참고 문자열을 XPathNavigator 개체의 Select 메서드 호출하려면 XPath 쿼리 식을 매개 변수를 지정합니다.
  5. 두 번째 명령 단추 Click_Event 프로시저에서 다음 코드를 붙여:
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. 코드의 기능을 이해하기 위한 인라인 주석 읽습니다. 어떻게 샘플 코드를 Books.xml)에 대해 처음 XPathExpression 개체를 인스턴스화하고 두 번째로 DotNetBooks.xml)에 대해 XPath 쿼리를 실행할 때 개체가 다시 특정 주의를 기울여야 합니다.

프로젝트 테스트

  1. Visual Basic .NET 프로젝트에 변경 내용을 저장하고 프로젝트를 실행하십시오.
  2. 폼이 나타나면 XPath 쿼리 식을 지정하려면 문자열을 사용하는 코드를 실행할 첫 번째 명령 단추를 클릭하십시오. 지정된 XPath 쿼리의 Books.xml에 대해 다음과 같이 나타납니다:
    XML Step by Step
    Developing XML solutions
    					
  3. XPath 쿼리 식을 지정하려면 XPathExpression 개체를 사용하는 코드를 실행하는 두 번째 명령 단추를 클릭하십시오. 출력을 Books.xml 및 DotNetBooks.xml에 대해 지정된 XPath 쿼리 다음과 같이 나타납니다:
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

속성

기술 자료: 317069 - 마지막 검토: 2005년 8월 12일 금요일 - 수정: 4.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
키워드:?
kbmt kbhowtomaster KB317069 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com