我有這個XMLFILE(tasks.xml):更新數據(LINQ到XML)產生wrongclosing標籤
<?xml version="1.0" encoding="utf-8"?>
<Tasks>
<Task>
<Id>dc77b03f-468c-4709-b8dc-4d9741c984dd</Id>
<Name>buy paper</Name>
<Category>inbox</Category>
<DueDate></DueDate>
<Project></Project>
<Context></Context>
<Note></Note>
<Created>03/16/2013 15:33:29</Created>
<Finished></Finished>
</Task>
</Tasks>
當我更新元素類似這樣的一切工作正常:
try
{
var item = (CheckBox)sender;
dynamic itemDC = item.DataContext;
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.GetFileAsync("tasks.xml");
var readStream = await FileIO.ReadTextAsync(file);
using (var writeStream = await file.OpenStreamForWriteAsync())
{
XElement xElem = XElement.Parse(readStream);
IEnumerable<XElement> singleTask = from task in xElem.Elements("Task")
where (string)task.Element("Id") == itemDC.Id
select task;
foreach (XElement task in singleTask)
{
task.SetElementValue("Finished", DateTime.Now.ToString("MM") + "/" + DateTime.Now.ToString("dd") + "/" + DateTime.Now.ToString("yyyy HH:mm:ss"));
}
xElem.Save(writeStream);
}
}
catch (Exception ex)
{
new MessageDialog(ex.Message).ShowAsync();
}
但如果我想再次編輯<Finnished>
元素並將值設置爲「」,它將在我的XML文件中生成兩個錯誤的結束標記。
再次編輯代碼:
try
{
var item = (CheckBox)sender;
dynamic itemDC = item.DataContext;
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.GetFileAsync("tasks.xml");
var readStream = await FileIO.ReadTextAsync(file);
using (var writeStream = await file.OpenStreamForWriteAsync())
{
XElement xElem = XElement.Parse(readStream);
IEnumerable<XElement> singleTask = from task in xElem.Elements("Task")
where (string)task.Element("Id") == itemDC.Id
select task;
foreach (XElement task in singleTask)
{
task.SetElementValue("Finished", "");
}
xElem.Save(writeStream);
}
}
catch (Exception ex)
{
new MessageDialog(ex.Message).ShowAsync();
}
錯誤生成的XML後編輯<Finished>
爲「」:
<?xml version="1.0" encoding="utf-8"?>
<Tasks>
<Task>
<Id>dc77b03f-468c-4709-b8dc-4d9741c984dd</Id>
<Name>dnešní úkol</Name>
<Category>inbox</Category>
<DueDate></DueDate>
<Project></Project>
<Context></Context>
<Note></Note>
<Created>03/16/2013 15:33:29</Created>
<Finished></Finished>
</Task>
</Tasks> </Task>
</Tasks>
如果我用繩子一樣大小日期字符串重新編輯,一切工作正常,但明確「」值做那個錯誤。
我花了很多時間弄清楚,但現在我不知道如何解決這個問題。
我在做什麼錯了?
這裏有一個你做錯了什麼。 'ex.Message'對故障排除沒有幫助。改爲使用'ex.ToString()'。 – 2013-03-19 01:21:08