目前正在使用wp7應用程序,它非常基本。用戶有一個計數器,並且如果在XML文件中存在當天的日期元素,則更新計數,如果沒有爲該日創建新的日期元素並且將計數作爲值。Linq查詢更新XML文件,如果元素存在不工作
我的priblem是,一切都工作正常,如果一個新的XML文件被創建,當前的日期元素更新沒有問題,但如果我測試第二天,一個新的元素被創建,但是當我想更新計數,新的日期元素被添加。因爲所有的代碼都在新文件上工作,所以我不明白這一點,但如果文件已經過時,那麼它並不是出於某種原因。
XML代碼
<?xml version="1.0" encoding="utf-8"?>
<Countlog>
<date Count="9">4/21/2012</date>
<date Count="4">4/21/2012</date>
<date Count="18">4/21/2012</date>
</Countlog>
C#
private void save_btn_Click(object sender, RoutedEventArgs e)
{
String _count = Count_tb.Text;
String s_todaysdate = todaysdate.Date.ToShortDateString();
IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("Countlog.xml", FileMode.Open, myIsolatedStorage);
StreamReader reader = new StreamReader(isoStream);
XDocument _xml = XDocument.Load(reader);
isoStream.Close();
var query = from r in _xml.Descendants("Countlog")
where r.Element("date").Value == (DateTime.Now.ToShortDateString())
select r.Element("date");
if (!query.Any())
{
XElement Addnewdate = new XElement("date", s_todaysdate, new XAttribute("Count", _count));
_xml.Root.Add(Addnewdate);
MessageBox.Show("no matching date");
}
else
{
foreach (XElement _date in query)
{
_date.Attribute("Count").Value = _count.ToString();
MessageBox.Show("Updating date");
}
}
IsolatedStorageFileStream isoStreamsave = new IsolatedStorageFileStream("Countlog.xml", FileMode.Truncate, myIsolatedStorage);
_xml.Save(isoStreamsave);
isoStreamsave.Close();
}
private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (pivotholder.SelectedIndex == 1)
{
IsolatedStorageFileStream isoFileStream2 = myIsolatedStorage.OpenFile("Countlog.xml", FileMode.Open);
StreamReader reader = new StreamReader(isoFileStream2);
XML_result.Text = reader.ReadToEnd();
reader.Close();
}
}
請讓我知道如果你需要更多的信息,這是潛伏在過去幾年後我第一次在這裏發帖。
乾杯
喬恩
即使示例XML文件重複日期......是故意的嗎? – 2012-04-21 07:37:24
是的,我複製了手機上顯示的內容。我只想每天都有一個日期元素,並且如果它已經存在就更新值。 – 2012-04-21 07:57:10