0
我很想使用默認的.Net xml序列化器將我的數據保存爲簡單的xml格式。我有一個enum MemberCode { feild1 = 1, feild2 = 2 /*...*/}
在運行時,我生成List<MemberCode>
我想保存到XML(有時更少有時)的成員。如何在.Net中實現動態部分XML類序列化?
如何實現這樣的部分類序列化?
我很想使用默認的.Net xml序列化器將我的數據保存爲簡單的xml格式。我有一個enum MemberCode { feild1 = 1, feild2 = 2 /*...*/}
在運行時,我生成List<MemberCode>
我想保存到XML(有時更少有時)的成員。如何在.Net中實現動態部分XML類序列化?
如何實現這樣的部分類序列化?
以下代碼可能會解決您的問題。
我們創建了一個名爲MemberList的可序列化的類,它包含一個MemberCodes數組。在運行時填充成員代碼列表後,我們將其轉換爲數組並將其序列化爲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
}
}
你的意思'XmlIgnore'?根據班級的規模化,系列化可能不是要走的路,可能只要自己編寫一個序列化程序可能更簡單 – Sayse
,但請注意,我的列表是在運行時生成的。 – myWallJSON
您可以編寫一個自定義序列化器方法,將列表作爲參數 – Sayse