프로그래밍/C#

LINQ to XML: C#에서 XML 데이터를 다루는 강력한 도구

shimdh 2025. 9. 13. 08:42
728x90

C#의 LINQ(Language Integrated Query)는 다양한 데이터 소스를 일관된 구문으로 쿼리할 수 있는 강력한 기능을 제공합니다. 특히 LINQ to XML은 XML 데이터를 쉽게 조작하고 쿼리할 수 있는 방법을 제공하여, XML 형식으로 데이터를 교환하는 많은 애플리케이션에서 유용하게 사용됩니다. 이번 블로그 포스트에서는 LINQ to XML의 주요 개념과 실용적인 예제를 통해 이 기능을 어떻게 활용할 수 있는지 알아보겠습니다.

LINQ to XML의 주요 개념

XDocument 클래스

  • 전체 XML 문서를 나타내며, XML 데이터를 메모리에 로드하고 저장하는 데 사용됩니다.

XElement 클래스

  • XML 문서 내의 개별 요소를 나타내며, 특정 요소에 접근하거나 수정할 수 있습니다.

LINQ 쿼리

  • Where, Select, OrderBy 등과 같은 표준 쿼리 연산자를 사용하여 XML 데이터를 쿼리할 수 있습니다.
728x90

실용적인 예: XML 문서 쿼리하기

XML 문서 로드하기

XML 데이터를 LINQ를 사용하여 작업하려면 먼저 메모리에 로드해야 합니다. 다음은 책 정보를 담고 있는 XML 파일을 예로 든 코드입니다:

using System;
using System.Linq;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        XDocument xdoc = XDocument.Load("books.xml");

        var books = from book in xdoc.Descendants("book")
                    select new
                    {
                        Title = book.Element("title").Value,
                        Author = book.Element("author").Value,
                        Year = (int)book.Element("year")
                    };

        foreach (var b in books)
        {
            Console.WriteLine($"{b.Title} by {b.Author}, published in {b.Year}");
        }
    }
}

조건을 사용한 데이터 필터링

특정 기준에 따라 데이터를 필터링할 수 있습니다. 예를 들어, 2020년 이후에 출판된 책을 검색하는 경우:

var recentBooks = from book in xdoc.Descendants("book")
                  where (int)book.Element("year") > 2020
                  select new 
                  {
                      Title = book.Element("title").Value,
                      Author = book.Element("author").Value,
                      Year = (int)book.Element("year")
                  };

foreach (var rb in recentBooks)
{
   Console.WriteLine($"{rb.Title} by {rb.Author}, published in {rb.Year}");
}

LINQ to XML을 사용한 데이터 수정

LINQ는 XML 문서를 읽는 것뿐만 아니라 쉽게 수정할 수도 있습니다:

xdoc.Root.Add(new XElement("book",
                 new XElement("title", "C# Design Patterns"),
                 new XElement("author", "Michael Brown"),
                 new XElement("year", "2022")));

xdoc.Save("updated_books.xml");

요약

LINQ to XML은 C# 내에서 XML 데이터를 직관적으로 다룰 수 있는 강력한 도구입니다. XDocumentXElement와 같은 클래스를 활용하여, 데이터셋을 읽고 수정하는 작업을 간단하게 수행할 수 있습니다. C#의 고급 주제를 탐구하면서 LINQ와 같은 도구를 효과적으로 활용하는 방법을 이해하는 것은 복잡한 데이터 관리 작업을 단순화하고 더 깨끗한 코드 아키텍처로 나아가는 길을 열어줄 것입니다.

728x90