요즘 자료들이 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>


웹코딩을 하다보면 인터넷익스플로러(이하 IE)를 자동으로 닫아야 하는 경우가 있습니다.

팝업이라면 window.close() , self.close() 정도면 되겠지만 팝업이 아닐경우 이렇게 하면

창을 닫겠냐고 문구가 뜨게 되죠, 전 그냥 닫히기를 원하는데.. 

그래서 약간의 꽁수를 쓰면 말없이 닫기가 가는한데 IE버전에 따라 조금씩 틀리지요...

그럼 보겠습니다..

IE6 :
window.opener = self; 
self.close(); 
IE7 :
window.open('about:blank','_self').close();
IE8 :
window.opener='Self';
window.open('','_parent','');
window.close();


참 쉽죠이~~~ ^^

즐거운 코딩 하세요~~~












업무를 하다보면 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>

+ Recent posts