WP7 - 尽管检查文件是否存在,但错误'XmlException未处理'

时间:2012-12-09 13:31:00

标签: c# .net xml xml-parsing windows-phone

我正在尝试从WP7中的XML文档中读取并遇到一个奇怪的错误,当我从重新启动WP7模拟器后第一次运行我的程序但是如果我运行它时,我根本就没有这个错误在没有关闭模拟器的情况下调试它给了我运行时错误:'XmlException未处理无法在应用程序xap包中找到文件'appdata.xml'。这很奇怪,因为我检查文件是否先存在:

using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
    if (store.FileExists("appdata.xml"))
    {
        XDocument loadedData = XDocument.Load("appdata.xml"); // <-- runtime error
        //code for parsing xml to variables
    }
}

它输入if语句所以文件应该存在但是XDocument由于某种原因不喜欢它,任何人都有任何想法?

如需进一步参考,我在点击应用中的按钮时如何保存数据,如果未调用此功能则不会出现错误

private void SaveData()
{
    rulesData = new AppData(StartCashRule.Text, LandGoRule.Text, FreeParkingRule.Text, FullCircuitRule.Text, AuctionRule.Text);

    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        IsolatedStorageFileStream ifStream = new IsolatedStorageFileStream("appdata.xml", FileMode.OpenOrCreate, store);

        using (XmlWriter writer = XmlWriter.Create(ifStream))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("myData");

            writer.WriteElementString("Starting_Cash", rulesData.myStartingCash);
            writer.WriteElementString("Land_on_Go_Data", rulesData.myLandOnGo);
            writer.WriteElementString("Free_Parking_Data", rulesData.myFreeParking);
            writer.WriteElementString("Full_Circuit_Data", rulesData.myFullCircuit);
            writer.WriteElementString("Auction_Data", rulesData.myAuction);

            writer.WriteEndElement();
            writer.WriteEndDocument();
        }

        ifStream.Close();
    }
}

谢谢 - 瑞恩

1 个答案:

答案 0 :(得分:4)

您正在传递给XDocument.Load名称“appdata.xml”,而不引用文件确实存在的IsolatedStorage存储。

你应该写这样的东西

XDocument loadedData = XDocument.Load(store.OpenFile("appdata.xml", FileMode.Open));