참고
: http://cafe.daum.net/aspdotnet (심재운님 자료)
: http://www.hoons.kr/ (훈스 닷넷)
[실행화면]
- TestFile.xml 파일
================================================================================================
[소스코드]
- LinqTest.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq; // Linq를 이용해서 XML파일의 데이터를 받아오는데 사용
namespace LinqFromXML
{
class LinqTest
{
private XDocument xmlDoc;
private List<string> list;
public LinqTest(string filename) // 파일의 경로를 받아
{
xmlDoc = XDocument.Load(filename); // XML 파일을 로드한다. (예외 처리 생략)
list = new List<string>();
}
// var는 지역변수로 쓸수 밖에 없으므로, 함수로 리턴하려면 다른 방식으로 리턴을 해야한다.
// 여기에서는 List에 담아서 컬렉션을 리턴했다.
public List<string> getXMLData()
{
// Linq
var tutorials = from tutorial in xmlDoc.Descendants("Tutorial")
select new
{
Author = tutorial.Element("Author").Value,
Title = tutorial.Element("Title").Value,
Date = tutorial.Element("Date").Value,
};
// Linq에서 얻은 XML 데이터를 List(컬렉션)에 추가한다.
foreach (var data in tutorials)
{
list.Add(data.ToString());
}
return list; // List 반환
}
}
}
-------------------------------------------------------------------------------------------------
- main (Program.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LinqFromXML
{
class Program
{
static void Main(string[] args)
{
string filePath = "C:\\Documents and Settings\\kjbk\\My Documents\\Visual Studio
2008\\Projects\\LinqFromXML\\LinqFromXML\\TestFile.xml";
LinqTest test = new LinqTest(filePath);
Console.WriteLine("=====================[XML] 파일의 결과======================\n");
string[] temp = new string[3];
List<string> finalData = test.getXMLData();
foreach (string str in finalData)
{
// 양끝에 { }를 제거하고 ','로 나눠서 배열에 저장
temp = str.Substring(1, str.Length-2).Split(',');
// 출력
Console.WriteLine("{0}\n{1}\n{2}\n\n", temp[0], temp[1], temp[2]);
}
Console.WriteLine("============================================================\n");
}
}
}
================================================================================================
'IT_Programming > LINQ' 카테고리의 다른 글
Removing Byte Order Mark (BOM) with LINQ (0) | 2010.07.25 |
---|---|
LINQ 에서 T-SQL 의 LIKE 함수처럼 구현하기 (0) | 2009.12.29 |