我已经创建了一个小的logg程序,我可以将自定义类保存到xml,然后将它们从xml转换回类。这工作正常,但问题是如果我想在xml中的列表中添加一个类,我必须阅读所有这些,添加一个类并重写所有这些如果我使用此方法,现在我知道我可以manualy通过搜索元素等添加一个类,但我想知道我是否可以按照我编写所有这些的方式来执行此操作。
这是我使用的代码示例:
public static void Test()
{
List<LoggInformation> infos = new List<LoggInformation>();
infos.Add(new LoggInformation() { Level = BpuInterface.BpuInterface.BPUController.LoggLevel.Debug, Message = "error1" });
infos.Add(new LoggInformation() { Level = BpuInterface.BpuInterface.BPUController.LoggLevel.Error, Message = "error2" });
DataContractSerializer dd = new DataContractSerializer(typeof(List<LoggInformation>));
using (var writer = new StreamWriter(@"C://testLoggfile.xml"))
{
dd.WriteObject(writer.BaseStream, infos);
}
}
public static void AddOneItem()
{
//??????????
}
[DataContract]
public class LoggInformation
{
[DataMemberAttribute]
public BpuInterface.BpuInterface.BPUController.LoggLevel Level { get; set; }
[DataMemberAttribute]
public Source Source { get; set; }
[DataMemberAttribute]
public string ExceptionMessage { get; set; }
[DataMemberAttribute]
public string ExceptionStack { get; set; }
[DataMemberAttribute]
public string ThreadName { get; set; }
[DataMemberAttribute]
public System.Threading.ApartmentState ThreadApartmentState { get; set; }
[DataMemberAttribute]
public string Message { get; set; }
[DataMemberAttribute]
public DateTime DateTime { get; set; }
}
答案 0 :(得分:1)
您可以使用此代替new StreamWriter(@"C://testLoggfile.xml"), true)
将在文件末尾附加行。
public static void Test()
{
...
using (var writer = new StreamWriter(@"C://testLoggfile.xml"), true) // this will append line at the end of file.
{
dd.WriteObject(writer.BaseStream, infos);
}
}
...