[XmlElement] 특성

차이

case 1

case 2

직열화 case1

직열화 case2

배열 속성 위에 [XmlElement] 특성을 붙이면,
컨테이너 없이 바로 <Air> 요소들만 나열됩니다.

[XmlArray] / [XmlArrayItem]와의 차이

컨테이너를 원한다면:

스키마가 반복을 직접 요구 → [XmlElement(“Air”)]

스키마가 컨테이너 아래 반복을 요구 → [XmlArray] + [XmlArrayItem(“Air”)]

자주 하는 실수 & 팁
빈 배열/리스트일 때 출력

[XmlElement(“Air”)]: 요소가 0개면 아무것도 출력되지 않음 (컨테이너가 없으니까).

[XmlArray]: 빈 컨테이너 가 출력될 수 있음 (리스트가 empty일 때).

특정 스키마가 “빈 컨테이너라도 꼭 있어야 함”을 요구한다면 XmlArray를 쓰는 게 낫습니다.

순서 제어

XmlSerializer는 보통 선언 순서대로 요소를 출력합니다.

필요하면 [XmlElement(Order = n)] 를 형제 속성들에 부여해 정확한 순서를 맞출 수 있습니다.

네임스페이스 지정

요소에 네임스페이스를 강제하려면 [XmlElement(“Air”, Namespace=”…”)] 처럼 지정하세요.

루트/타입 수준 네임스페이스는 [XmlRoot(Namespace=”…”)], [XmlType(Namespace=”…”)] 등으로 지정.

List vs 배열

List도 동일하게 동작합니다. 빈/가변 컬렉션 관리가 쉬워 실무에서는 List를 선호합니다.

예:

아이템 이름 커스터마이즈

[XmlElement(“ItemName”)]의 “ItemName”은 각 아이템 요소의 태그명입니다.
속성명이 Air여도 아이템명을 Air로 유지하려면: