現在、wp7 アプリに取り組んでいますが、これは非常に基本的なものです。ユーザーにはカウンターがあり、XML ファイルに現在の日付の日付要素が存在する場合はカウントが更新されます。そうでない場合は、その日付の新しい日付要素が作成され、カウントが値として使用されます。
私の問題は、新しい XML ファイルが作成され、現在の日付要素が問題なく更新されている場合、すべて正常に機能していますが、翌日テストすると新しい要素が作成されますが、カウントを更新したい場合、新しい日付要素が追加されました。すべてのコードが新しいファイルで機能するため、これはわかりませんが、ファイルが1日古い場合は、何らかの理由でそうではありません。
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();
}
}
さらに情報が必要な場合はお知らせください。過去数年間潜んでいた後、ここに投稿するのはこれが初めてです。
乾杯
ジョン