从独立存储中读取 XML 文件的特定值

本文关键字:文件 XML 独立 存储 读取 | 更新日期: 2023-09-27 18:36:55

嗨,我用这段代码保存一个 xml 文件

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("test.xml", FileMode.Create, myIsolatedStorage))
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;
                using (XmlWriter writer = XmlWriter.Create(isoStream, settings))
                {
                    writer.WriteStartElement("t", "test", "urn:test");
                    writer.WriteStartElement("TestA", "");
                    writer.WriteString(lbTestA.Text);
                    writer.WriteEndElement();
                    writer.WriteStartElement("TestB", "");
                    writer.WriteString(lbTestB.Text);
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                    writer.Flush();
                }
            }
        }

它创建了使用 WP7 的独立存储资源管理器检查的正确 xml 文件,现在我只想读取存储在 和 标签中的值,我唯一可以使用的代码是这个

private void loadgame_Click(object sender, EventArgs e)
        {
            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                IsolatedStorageFileStream isoFileStream = myIsolatedStorage.OpenFile("test.xml", FileMode.Open);
                using (StreamReader reader = new StreamReader(isoFileStream))
                {
                    lsScore.DataContext = reader.ReadToEnd();
                }
            }
        }

但它只是读取整个xml文件,因为它只是一个文本,有什么想法吗?

从独立存储中读取 XML 文件的特定值

读者。ReadToEnd() 将整个文件读取为字符串。如果你想要它作为XML,你必须构造一个XDocument,例如:

var doc = XDocument.Parse(reader.ReadToEnd());

然后使用 LINQ 从 XML 文档中获取所需的内容。

读取 xml 文件的代码。我在值之间使用了分隔符,后来使用了 .拆分以分隔值

private void loadtest_Click(object sender, EventArgs e)
        {
     IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
                if (storage.FileExists("test.xml"))
                {
          IsolatedStorageFileStream fileStream = storage.OpenFile("test.xml", FileMode.Open, FileAccess.ReadWrite);
                XDocument test = XDocument.Load(fileStream);
                 string score = test.Root.Value.ToString();
               string[] scores = score.Split(',');
               foreach (string s in scores)
               {
                  lbTestAScore.Text= scores[0].ToString();
                  lbTestBScore.Text = scores[1].ToString();
               }

XML 文件

    <?xml version="1.0" encoding="utf-8"?>
<test>
  <TeamA>300</TeamA>
  <Seperator>,</Seperator>
  <TeamB>-200</TeamB>
</test>

字符串的输出score = test.Root.Value.ToString();

为 300,-200

我认为这总结了一切。