요즘 자료들이 XML로 전달되는 경우가 많지 않은가?
그래서 XML을 읽는 방법을 간단히 적어 볼까 합니다..

1. 파일에서 읽기 - 읽어서 Label1에 표시하기 ( 참 쉽죠이~ )
XElement xElement = XElement.Load("sample.xml");
foreach (XElement element in xElement.Elements("Table"))
{              
Label1.Text += string.Format("대학코드 : {0}, 대학명 : {1}, 학과코드 : {2}, 학과명 : {3}, 전공코드 : {4},전공명 : {5}  ", element.Element("대학코드").Value, 
element.Element("대학명").Value, 
element.Element("학과코드").Value,
element.Element("학과명").Value, 
element.Element("전공코드").Value, 
element.Element("전공명").Value);

Label1.Text += "<br />";

}


2. 웹페이지에서 가져오기 
바뻐서 나중에~~~~;;;

다시 돌아 왔습니다..... 

using System.Xml.Linq;

XElement xElementMember = XElement.Load("http://www.aaa.com/sample.aspx");

foreach (XElement elementMember in xElementMember.Elements("Table"))
{
            Label1.Text += string.Format("대학코드 : {0}, 대학명 : {1}, 학과코드 : {2}, 학과명 : {3}, 전공코드 : {4},전공명 : {5}        
            ", element.Element("대학코드").Value, 
            element.Element("대학명").Value, element.Element("학과코드").Value,
            element.Element("학과명").Value, element.Element("전공코드").Value, element.Element("전공명").Value);
Label1.Text += "<br />";
}



XML 샘플파일
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
  <Table>
    <대학코드>00000000</대학코드>
    <대학명>공과대학</대학명>
    <학과코드>00000000</학과코드>
    <학과명>기계공학부</학과명>
    <전공코드>00000000</전공코드>
    <전공명>기계공학전공</전공명>
    <성명>가길동</성명>
    <학번>000000</학번>
    <학적상태>휴학생</학적상태>
    <대학구분>대학</대학구분>
  </Table>
  <Table>
    <대학코드>00000000</대학코드>
    <대학명>공과대학</대학명>
    <학과코드>00000000</학과코드>
    <학과명>기계공학부</학과명>
    <전공코드>00000000</전공코드>
    <전공명>기계공학전공</전공명>
    <성명>나길동</성명>
    <학번>000000</학번>
    <학적상태>재학생</학적상태>
    <대학구분>대학</대학구분>
  </Table>
  <Table>
    <대학코드>00000000</대학코드>
    <대학명>공과대학</대학명>
    <학과코드>00000000</학과코드>
    <학과명>기계공학부</학과명>
    <전공코드></전공코드>
    <전공명></전공명>
    <성명>다길동</성명>
    <학번>000000</학번>
    <학적상태>재학생</학적상태>
    <대학구분>대학</대학구분>
  </Table>
  <Table>
    <대학코드>00000000</대학코드>
    <대학명>일반대학원</대학명>
    <학과코드>00000000</학과코드>
    <학과명>건축공학과</학과명>
    <전공코드>00000000</전공코드>
    <전공명>건축구조전공</전공명>
    <성명>라길동</성명>
    <학번>000000</학번>
    <학적상태>재학생</학적상태>
    <대학구분>대학원</대학구분>
  </Table>
  <Table>
    <대학코드>00000000</대학코드>
    <대학명>일반대학원</대학명>
    <학과코드>00000000</학과코드>
    <학과명>건축공학과</학과명>
    <전공코드>00000000</전공코드>
    <전공명>건축구조전공</전공명>
    <성명>마길동</성명>
    <학번>000000</학번>
    <학적상태>재학생</학적상태>
    <대학구분>대학원</대학구분>
  </Table>
</NewDataSet>


업무를 하다보면 XML을 이용해 값을 주고 받아야 하는 경우가 많습니다.
그때 Linq To Xml은 코드량을 줄여 줍니다. 간단한 실전 예제로 설명 하겠습니다.

using System.Xml; 

//피드 받기 - XmlDocument  형식으로 XML 데이타를 가져옵니다.
XmlDocument doc = GetFeedXmlDocument();
if (doc == null)
return;

//피드에서 아이템 노드들 추출 - 하단 XML 구존 참조
XmlNodeList itemNodeList = doc.GetElementsByTagName("item");

var qItems = itemNodeList.Cast<XmlNode>().AsQueryable()
                             .Select(node =>
                                 new ItemDTO()
                                 {
                                     Menu = menu,
                                     Title = node["title"].InnerText,
                                     Link = node["link"].InnerText,
                                     Description = node["description"].InnerText,
                                     PubDate = node["pubDate"].InnerText,
                                     KeyNo = node["KeyNo"].InnerText,
                                     Category = node["Category"].InnerText,
                                     Writer = node["Writer"].InnerText,
                                     PDFFile = node["PDFFile"].InnerText,
                                     ETC = node["ETC"].InnerText
                                 });
                    foreach (var item in qItems)
                    {
// var 타입의 값 item을 보내서 ItemDTO 타입의 값으로 저장
// ProcessItem 내에서도 Linq를 사용하기에 InsertOnSubmit를 사용하여 저장하면 끝~
                        ProcessItem(item);
                    }

 /// <summary>
/// 피드를 다운로드 해서, XML문서로 로드한다.
/// </summary>
/// <returns>XML문서</returns>
private static XmlDocument GetFeedXmlDocument()
{
            try
            {
                Console.WriteLine("---------------------------");
                Console.WriteLine("다운로드 시작 : " +  FeedURL);
/// WebClient를 이용하여 XML을 뿌려주는 주소로 가서 XML를 가져와요~
                WebClient wc = new WebClient();
                string feedResult = wc.DownloadString(FeedURL); 
                Console.WriteLine("다운로드 완료");
                Console.WriteLine("---------------------------");

                Console.WriteLine("XML문서생성 시작");
/// XML형식으로 로드 합니다.
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(feedResult);
                Console.WriteLine("XML문서생성 완료");
                Console.WriteLine("---------------------------");
                return doc;
            }
            catch (Exception ex)
            {
                Console.WriteLine("다운로드 및 피드XML문서 로드과정에서 에러발생");
                Console.WriteLine(ex.ToString());
                return null;
            }
}



-- Class 형식
internal class ItemDTO
    {
        public SeriFeedMenuType Menu { get; set; }
        public string Title { get; set; }
        public string Link { get; set; }
        public string Description { get; set; }
        public string PubDate { get; set; }
        public string KeyNo { get; set; }
        public string Category { get; set; }
        public string Writer { get; set; }
        public string RecommandCount { get; set; }
        public string ViewCount { get; set; }
        public string PDFFile { get; set; }
        public string ETC { get; set; }
    }
-- XML 형식
<item>
                  <title>제목</title>
                  <link>
본문링크</link>
                  <description>
본문내용</description>
                  <pubDate>
게시일</pubDate>
                  <guid>
게시물 키 URL</guid>
                   <KeyNo>글번호</KeyNo>
                  <Writer>
작성자</Writer>
                  <Summary>
요약</Summary>
                  <PDFFile>PDF
파일경로</PDFFile>
                  <ETC>
기타게시물정보(첨부파일목록등..)</ETC>
                </item>
visual studio 2005 sp1 설치 실패 해결법 "이 제품에 대한 설치 원본을 사용할 수 없습니다."

비주얼 스튜디오 2005 서비스팩1 설치시 이런 멘트가 뜨고 설치가 안되던군요..

"이 제품에 대한 설치 원본을 사용할 수 없습니다."

 해결법입니다...

 저는 2003 을 사용하고 있습니다..

- 로컬 보안 정책을 클릭 합니다.

사용자 삽입 이미지


- 새 소프트웨어 정책을 클릭합니다

사용자 삽입 이미지


-  강요을 더블클릭 하거나.. 속성을 클릭합니다.

사용자 삽입 이미지


- 로컬 관리자를 제외한 모든 사용자를 클릭합니다.
사용자 삽입 이미지
 

- 서비스팩을 설치합니다.


- 서비스팩1 설치가 끝나면 소프트웨어 제한 정책을 삭제합니다.
(XP일 경우에는 삭제가 되지 않습니다 . 이 앞의 강요의 속성창으로 가서 소프트웨어 사용정책을 모든 사용자로 변경합니다..)

사용자 삽입 이미지

'개발 > ASP.NET, ASP' 카테고리의 다른 글

XML을 읽어보자~~~  (0) 2009.07.22
Linq To Xml을 사용해 보자  (0) 2009.03.26
ASP.NET 페이지 수명 주기 개요  (0) 2008.08.21
자바스크립트로 QueryString 값 받기  (0) 2008.06.27
[ASP] 달별 마지막 날자 구하기  (0) 2008.02.02

+ Recent posts