XmlSerializer 및 목록
XmlSerializer
XML 데이터를 List<T>
로 직접 역직렬화할 수 있나요? 샘플 XML 구조와 해당 C# 클래스를 사용하여 이를 살펴보겠습니다.
예제 XML:
<code class="language-xml"><?xml version="1.0"?> <user_list> <user> <id>1</id> <name>Joe</name> </user> <user> <id>2</id> <name>John</name> </user> </user_list></code>
C# 사용자 클래스:
<code class="language-csharp">public class User { [XmlElement("id")] public Int32 Id { get; set; } [XmlElement("name")] public String Name { get; set; } }</code>
List<User>
에 대한 직접 역직렬화는 XmlSerializer
에서 직접 지원되지 않습니다. 그러나 간단한 해결 방법으로 이 문제를 해결할 수 있습니다.
해결책: 목록 포장
해결 방법은 List<User>
:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Xml.Serialization; [XmlRoot("user_list")] public class UserListWrapper { public UserListWrapper() { Users = new List<User>(); } [XmlElement("user")] public List<User> Users { get; set; } }</code>
이 UserListWrapper
클래스를 사용하면 역직렬화가 간단해집니다. XmlSerializer
는 래퍼 내의 Users
목록을 채웁니다. 역직렬화 후에는 래퍼의 List<User>
속성에서 Users
에 액세스할 수 있습니다. 선호도에 따라 래퍼 클래스 내의 목록 대신 배열(User[]
)을 사용할 수도 있습니다.
위 내용은 XmlSerializer는 XML을 목록으로 역직렬화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!