Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# XmlSerializer 사용법 완벽 가이드: 직렬화와 역직렬화

C# XmlSerializer란 무엇인가?

직렬화(Serialization)와 역직렬화(De-serialization)는 데이터를 주고받음으로써 다른 애플리케이션과 통신할 수 있게 해주는 핵심 기술입니다. C#의 XmlSerializer를 사용하면 객체가 XML로 인코딩되는 방식을 세밀하게 제어할 수 있습니다.

XML 직렬화에 필요한 두 가지 클래스

XML 직렬화를 수행하려면 다음 두 개의 클래스가 필요합니다.

  • StreamWriter 클래스 – 직렬화된 XML 데이터를 파일에 기록하는 역할
  • XmlSerializer 클래스 – 객체를 XML 형식으로 변환하는 역할

두 클래스를 사용하려면 코드 상단에 System.Xml.Serialization 네임스페이스와 System.IO 네임스페이스를 추가해야 합니다.

XML 직렬화 방법

StreamWriter 객체와 직렬화할 대상 객체를 매개변수로 전달하여 Serialize 메서드를 호출하면 됩니다.

string myPath = "new.xml";
XmlSerializer s = new XmlSerializer(settings.GetType());
StreamWriter streamWriter = new StreamWriter(myPath);
s.Serialize(streamWriter, settings);

위 코드를 실행하면 "new.xml"이라는 이름의 XML 파일이 생성되며, 파일 안에는 객체의 데이터가 XML 형식으로 저장되어 있는 것을 확인할 수 있습니다.

XML 역직렬화 방법

이제 반대 과정인 역직렬화를 살펴보겠습니다. 역직렬화는 XML 파일에 저장된 데이터를 다시 객체로 변환하는 작업입니다.

MySettings mySettings = new MySettings();
string myPath = "new.xml";
XmlSerializer s = new XmlSerializer(typeof(MySettings));

파일에서 데이터를 읽어올 때는 StreamReader 클래스를 사용합니다.

StreamReader streamReader = new StreamReader(myPath);
mySettings = (MySettings)s.Deserialize(streamReader);

Deserialize 메서드는 object 타입을 반환하기 때문에, 원래의 타입으로 명시적 캐스팅을 해주어야 합니다. 이렇게 하면 XML 파일에 저장된 데이터가 MySettings 객체로 그대로 복원됩니다.

정리

XmlSerializer를 활용하면 객체를 XML 파일로 손쉽게 저장하고, 필요할 때 다시 불러와 객체로 복원할 수 있습니다. 애플리케이션 설정 파일 저장, 시스템 간 데이터 교환 등 다양한 시나리오에서 유용하게 활용할 수 있으니 꼭 익혀두시기 바랍니다.