在silverlight中使用linq to XML

本文关键字:linq to XML silverlight | 更新日期: 2023-09-27 18:09:02

我确实实现了一个web应用程序(asp.net,c#),它有几个页面。每个页面都能够从xml文件中读取值,并将其传递到每个页面的几个文本框中。用户可以编辑值并保存,从而保存xml文件。我确实使用了链接到xml。

我现在必须搬到silverlight。所以我试图在一个新的silverlight项目中实现相同的逻辑。我也尝试在silverlight中使用链接到xml。但在某种程度上,我无法读取不在xap文件中的xml文件。这是我的代码

 XDocument doc = Document.Load("C:'Data'Data.exe.config");
            var applicationSettings = (from x in doc.Descendants("applicationSettings")
                                       from kvpair in .Element("Data.Properties.Settings").Elements("setting")
                                       select new
                                       {
                                           Name = kvpair.Attribute("name").Value,
                                           Node = kvpair.Element("value")
                                       }).ToDictionary(x => x.Name, y => y);
            string Account  = applicationSettings["Account no"].Node.Value.ToString();
           txtAccountno.Text = AttendanceWindow;
            string Details=applicationSettings["Details"].Node.Value.ToString();
            txtDetails.Text = Details;

在silverlight中使用linq to XML

我假设"C:'Data'Data.exe"。"配置"是位于服务器上的文件?请记住,Silverlight是在客户端执行的。您不仅需要授予Silverlight访问该目录的权限(有关详细信息,请参阅此链接),而且您将访问客户端的硬盘,而不是服务器的硬盘。为了获得该文件的内容,您最好解析XML服务器端,并通过web服务将您需要的任何设置从它发送到Silverlight。

如果文件确实位于客户端计算机上,那么您需要创建一个浏览器外的Silverlight项目:http://msdn.microsoft.com/en-us/library/ee721082(VS.95).aspx

编辑:

啊,我想我现在明白是怎么回事了。该文档。Load方法默认假定URI指向XAP中的资源:http://msdn.microsoft.com/en-us/library/bb538371(v=vs.95).aspx

您可能需要做的事情将在这篇MSDN文章中描述,它将使用流方法加载XML: http://msdn.microsoft.com/en-us/library/cc645034(v=vs.95).aspx#Y0

您的问题与您可以访问磁盘上的哪些区域有关。

你需要确保Silverlight可以访问文件,它对文件的位置有权限,并且Silverlight被配置为能够访问本地文件。要么必须将文件移动到本地存储,要么必须在浏览器外以提升的特权运行。

参见:http://www.codeproject.com/KB/silverlight/FileExplorerInSilverlight.aspx获取从Silverlight

访问文件的示例

在Silverlight 5中,可以在浏览器中以更高的权限运行Silverlight应用程序,使您能够访问整个文件系统。否则,您将被限制在隔离的存储区域。