【问题标题】:Can't Save XDocument in Silverlight无法在 Silverlight 中保存 XDocument
【发布时间】:2011-12-25 20:29:33
【问题描述】:

我想将 Xdocument 保存到 xml 文件中,而且 silverlight 似乎不接受 xdoc.save(string str) 的字符串类型,所以我不得不在其中放入一个流,问题是当我放了一个文件流,我收到一条错误消息,提示“尝试访问该方法失败”并且未处理 MethodeAccessException 这是我的代码:

XDocument MainLBItems = XDocument.Load("SampleData/MainLBItems.xml");            
            MainLBItems.Root.Add(new XElement("Item",
                                            new XElement("Title", this.tb_Title.Text),
                                            new XElement("Dscrp", this.tb_Dscrp.Text),
                                            new XElement("Count", "0")));
            FileStream fs = new FileStream("SampleData/MainLBItems.xml", FileMode.Open, FileAccess.Write);
            MainLBItems.Save(fs);

【问题讨论】:

    标签: c# .net xml silverlight linq


    【解决方案1】:

    我只在 Windows Phone 7 中使用过 Silverlight,但我怀疑这同样适用于桌面 Silverlight...您不能像在完整桌面 .NET 框架中那样直接使用文件.相反,您必须使用isolated storage。例如:

    using (var file = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (var stream = file.OpenFile("file.xml", FileMode.Create))
        {
            document.Save(stream);
        }
    }
    

    (也使用流调整其他代码。)

    【讨论】:

    • @Gabe:不一定,不。应用程序能够加载它自己的文件,但不能将任意数据保存到文件系统,这非常有意义。 (老实说,我不知道XDocument.Load 在 Silverlight 中会做什么。)
    • 您好,谢谢 Jon 的回答,它实际上是寡妇手机 7.1 中的 Silverlight,我忘了提及它,我还是尝试了您的代码,它说这是 IslatedStoregeFileStream 中不允许的操作,您能解释一下吗我该怎么办
    • @Daoudi:一方面,您应该提供更多详细信息 - 例如究竟是哪个语句引发了异常以及异常本身是否有更多信息。这在 WP7 中保存 xml 文件的正确方法,所以出了点问题。请注意,如果您仍在子目录中使用文件名,则可能会导致问题。尝试一些简单的诊断来找出发生了什么。
    • 谢谢乔恩,我解决了,这正是你所预测的,我在子目录中使用了一个文件名,再次感谢
    【解决方案2】:

    您可以将任意文件保存到独立存储(请参阅 MSDN 以了解 an example),或者您可以打开“另存为”对话框以请求用户访问以写入文件。

    从外观上看,您正在从 XAP 文件或 XAP 来自的服务器读取 XML 流。在这两种情况下,您都无法回信到那些地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-22
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      相关资源
      最近更新 更多