ホームページ >バックエンド開発 >C++ >XmlSerializer は XML をリストに逆シリアル化できますか?

XmlSerializer は XML をリストに逆シリアル化できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-13 09:11:44765ブラウズ

Can XmlSerializer Deserialize XML into a List?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。