네트워크 및 보안/OPEN API

[OPEN API] 3. C# 콘솔 응용 프로그램, 다음 Open API 책 검색2

언제나휴일 2016. 5. 17. 13:59
반응형


[OPEN API] 3. C# 콘솔 응용 프로그램, 다음 Open API 책 검색2



안녕하세요. 언제나 휴일, 언휴예요.


앞에서 Open API가 무엇인지 알아보고 간단하게 C# 콘솔 응용 프로그램으로 책 검색기를 만들어 보았죠.


이번에는 앞에서 만들었던 책 검색기에 약간의 기능을 추가해 보아요.


앞에서는 XmlDocument 개체의 Load 메서드로 다음 Open API 책 검색 url과 파라미터를 쿼리 문자열을 입력 인자로 결과를 로딩한 후 아무런 작업없이 그대로 콘솔화면에 출력했어요.


이번에는 다음처럼 검색한 결과 목록에서 원하는 정보만 추출하여 콘솔화면에 출력하는 책 검색기를 만들어 보기로 할게요.

다음 Open API 책 검색 서비스를 이용한 책 검색기 실행화면


먼저 프로젝트를 생성하세요. 여기에서는 책 검색기2라고 정할게요.

Visual Studio 2015로 C# 콘솔 응용 프로그램 프로젝트 생성


다음 개발자 센터의 도서 검색 서비스 사이트를 보면 결과의 출력 형태를 소개하는 글이 있어요.


다음은 브라우저에 책 검색 쿼리 문자열로 확인한 결과예요.



이번에 작성할 프로그램은 다음 Open API 책 검색 서비스 결과에서 책의 제목과 저자, 출판사, 가격 정보를 추출하여 콘솔화면에 출력할 거예요.


다음처럼 코드를 편집하세요.

using System;

using System.Xml;

 

namespace _검색기2

{

    class Program

    {

        static void Main(string[] args)

        {

            string key = "자신의 다음 Open API ";//OPEN API

            Console.Write("검색할 책 제목:");

            string title = Console.ReadLine();//검색 질의 입력받음

 

            string queryurl = string.Format("http://apis.daum.net/search/book?apikey={0}&q={1}&output=xml", key, title);

            //검색 질의 및 사이트 문자열

 

            XmlDocument xdoc = new XmlDocument(); //Xml 문서 개체 생성           

            xdoc.Load(queryurl);            //Xml 문서 개체에 사이트 로딩

           

            XmlNode cnode = xdoc.SelectSingleNode("channel");

            XmlNodeList xnl = cnode.SelectNodes("item");

 

            foreach(XmlNode xn in xnl)

            {               

                Console.WriteLine("제목:{0}", xn.SelectSingleNode("title").InnerText);

                Console.WriteLine("저자:{0}", xn.SelectSingleNode("author").InnerText);

                Console.WriteLine("출판사:{0}", xn.SelectSingleNode("pub_nm").InnerText);

                Console.WriteLine("가격:{0}", xn.SelectSingleNode("list_price").InnerText);

                Console.WriteLine();

               

            }

        }

    }

}

 



결과의 루트 요소는 channel이죠. XmlDocument에서 channel 요소의 정보를 갖는 노드를 선택합니다.

XmlNode cnode = xdoc.SelectSingleNode("channel");


그리고 channel 오소를 갖는 노드에서 item 요소 목록을 얻어오세요.

XmlNodeList xnl = cnode.SelectNodes("item");


item 요소 목록의 각 XmlNode를 반복해서 순회합니다.

foreach(XmlNode xn in xnl)

{

    ...반복 수행할 작업...

}


반복할 작업은 현재 XmlNode에서 책과 저자, 출판사, 가격 정보를 얻어와서 출력하는 거예요. SelectSingleNode로 원하는 요소를 선택한 후에 InnerText로 내부 문자열을 출력합니다.

Console.WriteLine("제목:{0}", xn.SelectSingleNode("title").InnerText);

Console.WriteLine("저자:{0}", xn.SelectSingleNode("author").InnerText);

Console.WriteLine("출판사:{0}", xn.SelectSingleNode("pub_nm").InnerText);

Console.WriteLine("가격:{0}", xn.SelectSingleNode("list_price").InnerText);

Console.WriteLine();


이상으로 다음 Open API 책 검색 서비스를 이용하여 C# 언어로 간단한 책 검색기를 콘솔 응용 프로그램 형태로 만들어 보았어요.


앞으로 다양한 Open API 서비스를 다양한 언어와 다양한 형태의 프로그램으로 만들어 보아요.


오늘도 행복한 하루~


소스 파일

Program.cs





반응형