XmlSerializer と List
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 中国語 Web サイトの他の関連記事を参照してください。