KO
내 도구

XML을 C# 클래스로 변환(XmlSerializer)

XML에서 XmlSerializer용 C# 클래스를 만듭니다. XmlRoot, XmlElement, XmlAttribute, XmlText 특성, 반복 요소용 List<T>, 추정된 타입을 지원합니다.

해제하면 모든 값이 문자열이 됩니다.
C# 코드
생성된 클래스 수
3
역직렬화하는 방법
using System.IO;가 필요합니다

XmlSerializer는 특성에 널 허용 값 형식을 쓸 수 없어서, 선택적인 숫자·bool·날짜 특성에는 그 특성이 있었는지 알려 주는 보조 …Specified 속성이 붙습니다.

날짜만 있는 값(2000-10-01)은 XmlSerializer가 시간 없이 읽고 쓰도록 DataType = "date"를 씁니다.

내 도구 →
광고

.NET의 XmlSerializer로 XML을 객체로 읽으려면 문서와 정확히 맞는 특성이 붙은 클래스가 필요합니다. 루트에는 [XmlRoot], 자식 요소에는 [XmlElement], 속성에는 [XmlAttribute], 속성 옆의 텍스트에는 [XmlText]입니다. 샘플 문서를 붙여 넣으면 그런 클래스를 얻습니다. 반복되는 요소는 List<T>가 되고, 숫자·불리언·날짜는 타입이 지정되며, 선택적 값은 XmlSerializer가 요구하는 방식으로 처리되고, 네임스페이스도 그대로 옮겨집니다.

사용 방법

  1. 대표적인 XML 문서를 붙여 넣습니다. 선택적 요소와 반복이 어딘가에 들어 있게 하세요.
  2. 필요하면 C# 네임스페이스를 입력합니다.
  3. 값에 타입을 지정할지(int, decimal, bool, DateTime), 문자열로 둘지 고릅니다.
  4. 클래스를 복사하고 new XmlSerializer(typeof(Root))로 역직렬화합니다.

계산식

루트 → [XmlRoot] 클래스 · 속성 → [XmlAttribute] · 자식 요소 → [XmlElement] · 반복되는 자식 → List<T> · 속성 옆의 텍스트 → [XmlText]

텍스트만 있는 요소는 단순 타입의 속성이 됩니다. 범위에 따라 int 또는 long, decimal, bool(true/false), DateTime(xs:dateTime 또는 xs:date, 후자는 DataType = "date"), 그 밖에는 string이며, 비어 있는 경우가 한 번이라도 있으면 string으로 둡니다. 속성이나 자식이 있는 요소는 클래스가 되고, 구조가 같으면 클래스를 공유합니다. 값 형식의 선택적 요소는 T?가 되지만, 값 형식의 선택적 속성에는 …Specified 플래그가 붙습니다. XmlSerializer가 널 허용 속성을 지원하지 않기 때문입니다.

예시

예제 catalog에서는 클래스 세 개가 나옵니다. Catalog에는 List<Book> Books([XmlElement("book")])가 있습니다. Book에는 Id(string), Available(bool이며 첫 번째 책에만 있어서 AvailableSpecified가 붙음), Author, Title, Price, Published(DateTime, DataType = "date"), List<string> Tags가 있습니다. Price에는 currency 속성과 44.95 또는 5.95를 담는 decimal [XmlText] Value가 있습니다.

자주 묻는 질문

속성에 …Specified 짝이 붙는 이유는 무엇인가요?

XmlSerializer는 특성을 널 허용 형식에 매핑할 수 없습니다. Specified 패턴은 그 내장 대안으로, bool 값이 특성이 있었는지를 알려 주고 쓸지 여부도 제어합니다.

값이 int가 아니라 string인 이유는 무엇인가요?

적어도 샘플 값 하나가 단순한 숫자가 아니거나, 비어 있거나, 우편번호나 007처럼 0으로 시작해서 숫자 형식이면 0이 사라지기 때문입니다. 타입 추정을 해제해 모두 문자열로 두거나, 타입을 직접 고치세요.

XSD 파일도 읽나요?

아닙니다. 샘플 문서에서 클래스를 추정합니다. XSD가 있다면 Microsoft의 xsd.exe나 dotnet-xscgen이 스키마에서 직접 클래스를 만들어 줍니다.

내 XML이 업로드되나요?

아닙니다. 생성은 브라우저에서 이뤄집니다.

출처

최종 업데이트:

인용·퍼가기
APA

kakaoCalc. (2026, November 8). XML을 C# 클래스로 변환(XmlSerializer). https://kakao.mobile/ko/tools/xml-to-c-pojo-generator/

MLA

“XML을 C# 클래스로 변환(XmlSerializer).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/xml-to-c-pojo-generator/.

광고