XDocument 클래스와 LINQ

.NET/C# 2007. 8. 30. 00:22 |
XDocument 클래스
 
Framework 3.0 에 들어서면서 새로이 등장한 클래스이다.
그 이전 Framework 1.1, 2.0 에서 XML 작성을 해보았다면, 그 노가다와 다름없는 코딩을
해보았을 것이다.
 
XmlDocument 또는 XmlTextWriter, XmlTextReader 클래스 사용하여 편리하게 XML 작업을 했다.
XmlDocument 는 DOM 과 같은 형태로 작업이 가능하며, 빠른 탐색이 장점이다.
XmlTextWriter 와 XmlTextReader 는 Inline 작업이 가능하며, 간결한 사용법이 장점이었다.
 
기존 XmlTextWriter 로 XML 만드는 일반적인으로 작업하는 예
 
하지만, 오늘 XDocument 클래스를 알게된다면, 위 두 클래스를 쳐다도 안보게 될 상황이 생길 것 같다^^
 
 
XDocument 시작하기
 
기존 DOM 과 같은 형태로 객체를 생성하여 XML 을 만드는 방법이다.
 
// XElement 의 객체를 생성하는 방법
XDocument xdoc = new XDocument();
xdoc.Add(new XComment("XML TEST"));
XElement xele1 = new XElement("ROOT");
xele1.Add(new XElement("Child1", "1"));
xele1.Add(new XElement("Child2", "2"));
xdoc.Add(xele1);
Console.WriteLine(xdoc.ToString());
[코드1] 객체를 생성하여 XML 만들기
 
 
위와 같은 방법은 Element 에 가공이 필요할 때(attribute 추가) 사용하면 될 것 같다.
만약, 그러한 작업이 필요 없다면 더욱 간결하게 코딩 할 수 있다.
 
// params 로 선언된 XDocument 에 연속적으로 XElement 를 코딩.
xdoc = new XDocument(
        new XComment("XML TEST"),
        new XElement("ROOT",
               new XElement("Child1", "1"),
               new XElement("Child2", "2")));
        // 위의 결과와 동일
Console.WriteLine(xdoc.ToString());
[코드2] XDocument 의 params 인자로 연속적인 작업
 
XDocument 의 두번째 생성자는 params 키워드로 object 로 선언된 불특정 다수의 인자값을
받을 수 있다.
 
 
그렇기 때문에 위의 [코드2] 와 같은 연속적인 인자를 받는 코딩이 가능하다.
 
 
 
LINQ 를 이용한 Element 추출
 
위의 샘플과 같은 XML 데이터가 있을 경우, 이것을 추출하기 위해 탐색작업을 해야한다.
Framework 3.0 의 LINQ 는 간결하다 못해, 강력한 기능의 데이터 탐색 작업을 할 수 있다.
 
var result = from r1 in xdoc.Element("ROOT").Elements()
                where r1.Name == "Child1"
                select r1;
                      
foreach (var r in result)
{
        Console.WriteLine(r.Name);
}
[코드3] LINQ 를 이용한 XML 탐색 작업
 
 
XML Element Name 이 Child1 인 것을 탐색하는 구문이다.
기존 SQL 쿼리와 다른 것은 select 가 맨 마지막에 위치한다는 것이다.
 
데이터베이스의 SQL 구문과 C# 의 객체지향을 어느정도 이해한다면
그리 어렵지 않게 LINQ 쿼리를 만들어 낼 수 있을 것이다.
Posted by 땡초 POWERUMC
TAG , ,

댓글을 달아 주세요