ホームページ > バックエンド開発 > C++ > XmlSerializer を使用して XML をリストに逆シリアル化する方法

XmlSerializer を使用して XML をリストに逆シリアル化する方法

Barbara Streisand
リリース: 2025-01-13 07:59:57
オリジナル
167 人が閲覧しました

How to Deserialize XML into a List Using XmlSerializer?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート