0

デフォルトの .Net xml シリアライザーを使用して、データを単純な xml 形式に保存したいと考えています。実行時に、 xml に保存したいメンバーenum MemberCode { feild1 = 1, feild2 = 2 /*...*/}を生成します List<MemberCode>(場合によっては少ない場合もあります)。

このような部分的なクラスのシリアライゼーションを実現するにはどうすればよいですか?

4

1 に答える 1

0

以下のコードで問題が解決する場合があります。

MemberCode の配列を含む MemberList という直列化可能なクラスを作成します。実行時にメンバー コードのリストが取り込まれた後、それを配列に変換し、XML にシリアル化します。結果は、デバッグ フォルダーの「test.xml」というファイルに保存されます。

XML 出力

<?xml version="1.0" encoding="utf-8"?>
    <MemberList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Members>
        <Member>Field1</Member>
        <Member>Field2</Member>
        <Member>Field3</Member>
        <Member>Field2</Member>
        <Member>Field1</Member>
        <Member>field4</Member>
      </Members>
    </MemberList>

コード:

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;

namespace ConsoleApplication1
{
    public class Program
    {
        static void Main(string[] args)
        {
            // Your member code list
            List<MemberCode> list = new List<MemberCode>();

            // Add some members to the list during runtime (replace with your logic)
            list.Add(MemberCode.Field1);
            list.Add(MemberCode.Field2);
            list.Add(MemberCode.Field3);
            list.Add(MemberCode.Field2);
            list.Add(MemberCode.Field1);
            list.Add(MemberCode.field4);

            // Create a new serializable member list
            MemberList memberList = new MemberList();
            // Convert your list to a serializable array
            memberList.MemberCode = list.ToArray();

            // Write the XML to a file
            XmlSerializer serializer = new XmlSerializer(typeof(MemberList));
            TextWriter writer = new StreamWriter("test.xml");
            serializer.Serialize(writer, memberList);

            Console.ReadLine();
        }
    }

    [XmlRoot]
    public class MemberList
    {
        [XmlArray("Members")]
        [XmlArrayItem("Member", typeof(MemberCode))]
        public MemberCode[] MemberCode { get; set; }
    }

    public enum MemberCode
    {
        Field1 = 1,
        Field2 = 2,
        Field3 = 3,
        field4 = 4
    }
}
于 2013-06-06T04:00:42.147 に答える