1

XML ファイルに情報を書き込もうとしています。構造は次のようになります。

<Scoreboard>
 <Match>
  <name>Dummy</name>
  <score>1234</score>
 </Match>
 <Match>
  <name>Sample</name>
  <score>4567</score>
 </Match>    
</Scoreboard>

問題は、1 つのエントリしか書き込めないことです。別の "Match" を挿入すると、古いエントリが上書きされます。

たとえば、私が持っている場合:

<Scoreboard>
 <Match>
  <name>Dummy</name>
  <score>1234</score>
 </Match>
</Scoreboard>

次に、別のエントリを追加すると、古いエントリは削除され、新しいエントリのみが表示されます。たとえば、次のようになります。

<Scoreboard>
 <Match>
  <name>Sample</name>
  <score>4567</score>
 </Match>
</Scoreboard>

古いエントリを上書きせずに新しいエントリを作成する方法を知っています。

これが私のコードです:

using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
        {
//If file doesn't exist, then create it.

            if (!isoStore.FileExists("scoreboard.xml"))
            {
                XDocument doc = new XDocument(new XElement("Scoreboard"));

                using (IsolatedStorageFileStream isoStream =
                   new IsolatedStorageFileStream("scoreboard.xml", System.IO.FileMode.Create, isoStore))
                {
                    doc.Save(isoStream);
                }


            }
            else
            {
//Else open it and write a new element which is a child of Scoreboard
                using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("scoreboard.xml", System.IO.FileMode.Open, isoStore))
                {
                    XDocument doc1 = XDocument.Load(isoStream);

                    var newElement = new XElement("Match",
                        new XElement("name", VarGlobal.Name),
                        new XElement("score", VarGlobal.Score));

                    doc1.Element("Scoreboard").Add(newElement);

                    Messaggio.Text = doc1.ToString();
                }
            }
        }
4

1 に答える 1