我对XMLSerializer有问题:我有一个列表,并希望使用XMLSerializer将列表的内容写入XML。整个事情也很好。但是在n行之后,我想用XMLSerializer将数据写到新的XML中,但是数据总是写到现有的XML中。
我该如何解决,在n行之后创建一个新的XML文件?
要序列化的代码:
private void SaveLogFile()
{
bf = new BaseFunctions();
try
{
XmlSerializer seri = new XmlSerializer(typeof(List<LVProperties>));
TextWriter wr = new StreamWriter(FilePath);
seri.Serialize(wr, FileWatcher.Data);
wr.Close();
}
catch (Exception ex)
{
bf.app_Errorhandler(ex);
return;
}
}
用于收集数据以供Listview和数据表进行序列化的代码:
public static List<LVProperties> Data = new List<LVProperties>();
[STAThread]
private void LogDataToLV()
{
ff = new FileFunctions();
vlp = new LVProperties();
bf = new BaseFunctions();
bf.ReadAppInfos();
_lvLogMe.Dispatcher.BeginInvoke(new Action(delegate ()
{
if (bf.osVersion.Major == 6 && bf.osVersion.Minor >= 2 || bf.osVersion.Major >= 10 && bf.osVersion.Minor >= 0)
{
LogMeUser = ff.getFileDetails(LogMePath, LogMeFile, FileFunctions.FileDetailInfo.Title); //Problem mit InvalidCastException!!
LogMeSize = ff.getFileDetails(LogMePath, LogMeFile, FileFunctions.FileDetailInfo.Size);
}
else
{
LogMeUser = "not supported by OS";
LogMeSize = "unknown";
}
_lvLogMe.Items.Add(new LVProperties { lv_LogMeDate = LogMeDate, lv_LogMeEvent = LogMeEvent, lv_LogMeFile = LogMeFile, lv_LogMePath = LogMePath, lv_LogMeUser = LogMeUser, lv_LogMeSize = LogMeSize });
Data.Add(new LVProperties { lv_LogMeDate = LogMeDate, lv_LogMeEvent = LogMeEvent, lv_LogMeFile = LogMeFile, lv_LogMePath = LogMePath, lv_LogMeUser = LogMeUser, lv_LogMeSize = LogMeSize });
_lvLogMe.SelectedIndex = _lvLogMe.Items.Count - 1;
_tbLogCount.Text = _lvLogMe.Items.Count.ToString();
if (VisualTreeHelper.GetChildrenCount(_lvLogMe) > 0)
{
Border border = (Border)VisualTreeHelper.GetChild(_lvLogMe, 0);
ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}
_lvLogMe.UpdateLayout();
_lvLogMe.DataContext = Data;
LVRowCount = _lvLogMe.Items.Count;
if (sXML.SaveLogAuto == "true")
{
if (LVRowCount == 10)
{
SaveLogFile();
}
}
if (_lvLogMe.Items.Count == 10)
{
_lvLogMe.Items.Clear();
Data.Clear();
}
}));
}
将newtonsoft.JSON包管理器与]一起使用>
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(path);
string json = JsonConvert.SerializeXmlNode(doc);