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)的实例时,您需要重置流中的位置以覆盖已经存在的内容。XmlDocumentisoFileStream

最简单的方法是创建一个新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 回答