XmlSerializer と List
XmlSerializer
クラスは、XML データをカスタム オブジェクトのリストなどのさまざまなデータ型に逆シリアル化する簡単なメソッドを提供します。 このガイドでは、これを達成するための 2 つのアプローチを説明します。
方法 1: ラッパー クラスを利用する
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")]
属性は、XML のルート要素として「user_list」を指定します。 [XmlElement("user")]
属性は、各 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 中国語 Web サイトの他の関連記事を参照してください。