【问题标题】:WP7 - Error 'XmlException was unhandled' despite checking if the file existsWP7 - 尽管检查文件是否存在,但错误“XmlException 未处理”
【发布时间】:2012-12-09 13:30:59
【问题描述】:

我正在尝试从 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();
    }
}

谢谢 - 瑞恩

【问题讨论】:

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


    【解决方案1】:

    您将传递给 XDocument.Load 名称“appdata.xml”,而没有对文件真正存在的独立存储存储的任何引用。

    你应该这样写

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

    【讨论】:

    • 谢谢 :) 虽然我现在在我的保存功能中将文件作为独立存储文件流打开时出现错误,但我在阅读后如何关闭文件,因为我没有看到 store.close () 还是 loadedData.close() 函数?谢谢
    • 在哪一行得到异常,什么异常?
    • 自从我关闭并重新打开项目后,我收到了一个新错误:XDocument loadedData = Document.Load(store.OpenFile("appdata.xml",FileMode.Open));在 ReadData 函数中,异常是 XmlException "根级别的数据无效。第 1 行,位置 422。"
    • 通常这意味着xml文件不是有效的xml。您能确认 XML 格式正确吗?尝试用IE打开XML文件,检查是否有错误。
    • IsolatedStorageFileStream ifStream = new IsolatedStorageFileStream("appdata.xml", FileMode.OpenOrCreate, store);给了我错误“Operation not allowed on IsolatedStorageFileStream。”,我的猜测是我需要在读取 xml 文件后关闭它,但我没有看到 XDocument 的任何关闭函数,有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2013-04-27
    • 2016-08-06
    • 2019-04-09
    • 2016-02-21
    相关资源
    最近更新 更多