簡體   English   中英

在xml列表中添加和刪除項目

[英]adding and removing items in xml list

我創建了一個小的logg程序,並可以將自定義類保存到xml,並將它們從xml轉換回一個類。 這工作正常,但是問題是,如果我想將一個類添加到xml中的列表中,我必須閱讀所有類,添加一個類並重寫所有它們(如果我使用此方法),現在我知道我可以手動通過搜索元素等來添加類,但是我想知道是否可以通過編寫所有元素的方式來做到這一點。

這是我使用的代碼示例:

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; }

    }

您可以使用此代替, 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);
        }
    }
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM