HOWTO: Visual C# .NET을 사용하여 XPath 식으로 XML 쿼리

기술 자료 번역 기술 자료 번역
기술 자료: 308333 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR308333
모두 확대 | 모두 축소

이 페이지에서

요약

본 문서는 XPathNavigator 클래스를 사용하여 XPath(XML Path Language) 식으로 XPathDocument 개체를 쿼리하는 방법을 설명합니다. XPath는 식을 평가하고 문서 내의 특정 노드를 선택하기 위하여 프로그래밍 방식으로 사용됩니다.

요구 사항

다음은 권장 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩입니다.
  • Visual C# .NET
본 문서는 사용자가 다음 항목을 잘 알고 있다고 가정합니다.
  • XML 용어
  • XML 파일 만들기 및 읽기
  • XPath 구문

XPath 식으로 XML을 쿼리하는 방법

  1. Visual Studio .NET에서 새 Visual C# .NET 콘솔 응용 프로그램을 만듭니다.

    참고: 이 예에서는 Books.xml이라는 파일을 사용합니다. Books.xml 파일을 직접 만들어 사용하거나 .NET Software Development Kit(SDK) Quickstarts에 포함된 예제 파일을 사용할 수 있습니다. Quickstarts를 설치하지 않은 경우에는 "참조" 절에 나와 있는 다운로드 위치에서 Books.xml 파일을 다운로드할 수 있습니다. Quickstarts를 설치한 경우에는 Books.xml 파일이 다음 폴더에 들어 있습니다.
    Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    이 프로젝트에서 만든 폴더 아래에 있는 \Bin\Debug 폴더에 Books.xml 파일을 복사해야 합니다.
  2. 프로젝트가 System.Xml 네임스페이스를 참조하는지 확인합니다.
  3. XmlXPath 네임스페이스에 using 문을 사용합니다. 그러면 나중에 코드에서 이 네임스페이스 내의 선언을 한정하지 않아도 됩니다. 다음과 같이 using 문은 항상 선언 앞에 사용해야 합니다.
    using System.Xml;
    using System.Xml.XPath;
  4. 적절한 변수를 선언합니다. XPathDocument 개체를 선언하여 XML 문서를 유지하고 XpathNavigator 개체를 선언하여 XPath 식을 평가하고 XPathNodeIterator 개체를 선언하여 선택한 노드 사이의 이동을 반복합니다. String 개체를 선언하여 XPath 식을 유지합니다. Class1의 Main 함수에서 선언 코드를 추가합니다.
       XPathNavigator nav;
       XPathDocument docNav;
       XPathNodeIterator NodeIter;
       String strExpression;
  5. 예제 파일인 Books.xml을 사용하여 XPathDocument를 로드합니다. XPathDocument 클래스는 XSLT(eXtensible Stylesheet Language Transformations)를 사용하여 XML 문서 처리를 위한 고속의 고성능 캐시를 제공합니다. 이 클래스는 XML 문서 개체 모델(DOM)과 비슷하지만, XSLT 처리와 XPath 데이터 모델에 맞게 최적화되어 있습니다.
        // Open the XML.
        docNav = new XPathDocument(@"c:\books.xml");
  6. 문서에서 XPathNavigator를 만듭니다. XPathNavigator 개체는 읽기 전용 XPath 쿼리에 사용됩니다. XPath 쿼리가 결과 값이나 많은 수의 노드를 반환할 수 있습니다.
         // Create a navigator to query with XPath.
         nav = docNav.CreateNavigator();
  7. 서적의 평균 가격을 찾는 XPath 식을 만듭니다. 이 XPath 식은 단일 값을 반환합니다. XPath 구문에 대한 자세한 내용은 "참조" 절의 "XPath 구문"을 참조하십시오.
         // Find the average cost of a book.
         // This expression uses standard XPath syntax.
         strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";
  8. XPathNavigator 개체의 Evaluate 메서드를 사용하여 XPath 식을 평가합니다. Evaluate 메서드는 식의 결과를 반환합니다.
        // Use the Evaluate method to return the evaluated expression.
        Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
  9. 가격이 10달러 이상인 모든 서적을 찾는 XPath 식을 만듭니다. 이 XPath 식은 XML 소스에서 Title 노드만 반환합니다.
        // Find the title of the books that are greater then $10.00.
        strExpression = "/bookstore/book/title[../price>10.00]";
  10. XPathNavigatorSelect 메서드를 사용하여 선택된 노드의 XPathNodeIterator를 만듭니다. XPathNodeIterator는 XPath 노드 집합을 나타내고 이 노드 집합에 대한 작업만 지원합니다.
        // Select the node and place the results in an iterator.
        NodeIter = nav.Select(strExpression);
  11. XPathNavigatorSelect 메서드에서 반환된 XPathNodeIterator를 사용하여 선택된 노드 사이를 이동합니다. 이런 경우에는 XPathNodeIteratorMoveNext 메서드를 사용하여 선택한 모든 노드 사이의 이동을 반복할 수 있습니다.
      Console.WriteLine("List of expensive books:");
      //Iterate through the results showing the element value.
      while (NodeIter.MoveNext())
      {
          Console.WriteLine("Book Title: {0}", NodeIter.Current.Value);
      };
  12. ReadLine 메서드로 콘솔 디스플레이의 끝에 일시 중지를 추가하여 위의 결과를 읽기 쉽게 표시합니다.
        // Pause
        Console.ReadLine();
  13. 프로젝트를 빌드하고 실행합니다. 결과가 콘솔 창에 표시됨을 확인합니다.

문제 해결

코드를 테스트할 때 아래와 같은 예외 오류 메시지가 나타날 수 있습니다.
처리되지 않은 'System.Xml.XmlException' 형식의 예외가 System.xml.dll에서 발생했습니다.

추가 정보: 시스템 오류.
예외 오류는 다음 코드 줄에서 발생합니다.
docNav = new XPathDocument("c:\\books.xml");
예외 오류는 잘못된 처리 명령에 의해 발생합니다. 예를 들어, 처리 명령에 관계 없는 공백이 포함될 수 있습니다. 다음은 잘못된 처리 명령의 예입니다.
<?xml version='1.0' ?>
예외를 해결하려면 다음 중 하나를 수행하십시오.
  • 잘못된 처리 명령을 수정합니다. 다음은 유효한 처리 명령의 예입니다.
    <?xml version='1.0'?>
    -또는-
  • 다음은 유효한 처리 명령의 예입니다. Books.xml 파일에서 XML 처리 명령을 제거합니다.

참조

다음 파일은 Microsoft 다운로드 센터에서 다운로드할 수 있습니다.
그림 축소그림 확대
다운로드
지금 Books.xml 다운로드
자세한 내용은 다음 웹 사이트를 참조하십시오.
"XML in .NET: .NET Framework XML Classes and C# Offer Simple, Scalable Data Manipulation"
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/

XPathNavigator 클래스
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXPathXPathNavigatorClassTopic.asp

XPathDocument 클래스
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXPathXPathDocumentClassTopic.asp?frame=true

XPathNodeIterator 클래스
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemXmlXPathXPathNodeIteratorClassTopic.asp?frame=true

"XSLT Transformations with the XslTransform"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguidnf/html/cpconxslttransformationswithxsltransform.asp?frame=true

XPath 예제
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmrefxpathexamples.asp

XPath 구문
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmrefxpathsyntax.asp?frame=true

"XML Path Language (XPath)"
Version 1.0: W3C Recommendation 16 November 1999
http://www.w3.org/TR/1999/REC-xpath-19991116

속성

기술 자료: 308333 - 마지막 검토: 2006년 4월 28일 금요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ADO .NET(.NET Framework에 포함)
  • Microsoft Visual C# .NET 2002 Standard Edition
키워드:?
kbhowto kbhowtomaster kbdownload KB308333

피드백 보내기

 

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