XmlSerializer 및 목록
XmlSerializer
클래스는 XML 데이터를 사용자 정의 개체 목록을 포함한 다양한 데이터 유형으로 역직렬화하는 간단한 방법을 제공합니다. 이 가이드에서는 이를 달성하기 위한 두 가지 접근 방식을 보여줍니다.
방법 1: Wrapper 클래스 활용
XML을 List<User>
으로 역직렬화하려면 XML 구조 내에서 루트 요소 역할을 하는 래퍼 클래스가 필요합니다. UserList
클래스를 고려해보세요:
<code class="language-csharp">[XmlRoot("user_list")] public class UserList { public UserList() { Items = new List<User>(); } [XmlElement("user")] public List<User> Items { get; set; } }</code>
이 클래스는 User
객체 목록을 캡슐화합니다. [XmlRoot("user_list")]
속성은 "user_list"를 XML의 루트 요소로 지정합니다. [XmlElement("user")]
속성은 각 User
개체를 "사용자" 요소에 매핑합니다.
다음으로 User
클래스를 정의합니다.
<code class="language-csharp">public class User { [XmlElement("id")] public Int32 Id { get; set; } [XmlElement("name")] public String Name { get; set; } }</code>
마지막으로 역직렬화를 위해 XmlSerializer
을 사용합니다.
<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(UserList)); UserList userList = (UserList)serializer.Deserialize(streamOrStringReader);</code>
streamOrStringReader
을 XML 데이터가 포함된 Stream
또는 StringReader
개체로 바꾸세요.
방법 2: 직접 배열 역직렬화
또는 User
클래스 내에 직접 목록을 삽입하여 프로세스를 단순화할 수 있습니다.
<code class="language-csharp">[XmlRoot("user_list")] public class User { public User[] Items { get; set; } }</code>
역직렬화는 다음과 같습니다.
<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(User)); User userArray = (User)serializer.Deserialize(streamOrStringReader);</code>
이제 Items
속성은 User
객체 배열을 보유합니다.
올바른 방법 선택
래퍼 클래스 접근 방식(방법 1)은 더 큰 유연성을 제공하는 반면 직접 배열 방법(방법 2)은 더 간결한 솔루션을 제공합니다. 최선의 선택은 XML 데이터의 특정 구조와 개인 선호도에 따라 다릅니다.
위 내용은 XmlSerializer를 사용하여 XML을 목록으로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!