1

こんにちは、wp7 の xml ノードの更新について助けが必要です。私のxmlは次のとおりです:

<?xml version="1.0" encoding="utf-8"?>
<ConfigData>
  <CallerNo1>123</CallerNo1>
  <MobileNo1>123</MobileNo1>
  <MobileNo2>123</MobileNo2>
  <MobileNo3>123</MobileNo3>
  <MobileNo4>123</MobileNo4>
  <MobileNo5>123</MobileNo5>
  <EmailNo1>123</EmailNo1>
  <EmailNo2>123</EmailNo2>
  <EmailNo3>123</EmailNo3>
  <EmailNo4>123</EmailNo4>
  <EmailNo5>123</EmailNo5>
</ConfigData> 

値を 1111 に更新したいので、それを達成するために次のコードを書きました。

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    IsolatedStorageFileStream isoFileStream = myIsolatedStorage.OpenFile("Configuration.xml", FileMode.Open, FileAccess.ReadWrite);
                    XDocument xml = XDocument.Load(isoFileStream, LoadOptions.None);
                    xml.Element("ConfigData").SetElementValue("CallerNo1", "11111");
                    xml.Save(isoFileStream);
                    isoFileStream.Flush();
                    isoFileStream.Close();
                }

次に、ファイルを再度読み取った後、次のようなxmlが表示されます:

<?xml version="1.0" encoding="utf-8"?>
<ConfigData>
  <CallerNo1>123</CallerNo1>
  <MobileNo1>123</MobileNo1>
  <MobileNo2>123</MobileNo2>
  <MobileNo3>123</MobileNo3>
  <MobileNo4>123</MobileNo4>
  <MobileNo5>123</MobileNo5>
  <EmailNo1>123</EmailNo1>
  <EmailNo2>123</EmailNo2>
  <EmailNo3>123</EmailNo3>
  <EmailNo4>123</EmailNo4>
  <EmailNo5>123</EmailNo5>
</ConfigData><?xml version="1.0" encoding="utf-8"?>
<ConfigData>
  <CallerNo1>11111</CallerNo1>
  <MobileNo1>123</MobileNo1>
  <MobileNo2>123</MobileNo2>
  <MobileNo3>123</MobileNo3>
  <MobileNo4>123</MobileNo4>
  <MobileNo5>123</MobileNo5>
  <EmailNo1>123</EmailNo1>
  <EmailNo2>123</EmailNo2>
  <EmailNo3>123</EmailNo3>
  <EmailNo4>123</EmailNo4>
  <EmailNo5>123</EmailNo5>
</ConfigData>

新しい xml が作成され、既存の xml に追加されます。xml ファイルを変更するにはどうすればよいですか?

4

1 に答える 1

1

これはSave(Stream)XmlDocumentインスタンスを呼び出すときisoFileStreamに、ストリーム内の位置をリセットして、既に存在するものを上書きする必要があるためです。

IsolatedStorageFileStreamこれを行う最も簡単な方法は、書き込み用に新しいを作成することです。

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
    XDocument xml = null;
    //Read the file stream into an XDocument using a reading stream
    using (IsolatedStorageFileStream isoFileStream = myIsolatedStorage.OpenFile("Configuration.xml", FileMode.Open, FileAccess.Read))
    {
        xml = XDocument.Load(isoFileStream, LoadOptions.None);
        xml.Element("ConfigData").SetElementValue("CallerNo1", "11111");
    }

    //Write it back out using a write one.
    using (IsolatedStorageFileStream isoFileStream = myIsolatedStorage.OpenFile("Configuration.xml", FileMode.Truncate, FileAccess.Write))
    {
        xml.Save(isoFileStream, SaveOptions.None);
    }
 }
于 2012-12-30T11:10:40.370 に答える