2011-04-08 39 views
1

我有一个silverlight程序集,它有几个xml文件。所有这些文件都被嵌入为资源。我也不知道文件名。我需要加载所有文件并在数据字典中构造数据。 我知道如何加载xml文件,如果我知道文件名。如下图所示如何从silverlight程序集加载所有资源?

this.filePath = string.Format(@"/{0};component/internal/{1}", assemblyName, "TaxRules.xml"); 
StreamResourceInfo streamResourceInfo = Application.GetResourceStream(new Uri(filePath, UriKind.Relative)); 
     Stream stream = streamResourceInfo.Stream; 
     //check for performance 
     XmlReader reader = XmlReader.Create(stream); 

我不知道如何加载所有的XML文件而无需知道文件名.. 有这方面的帮助是非常appreacited

回答

0

如果对XML文件的生成操作是嵌入式资源,你在装配中,你可以从装配中获得它

eg

Assembly asm = Assembly.GetExecutingAssembly(); 

var names = (from n in asm.GetManifestResourceNames() 
         where n.EndsWith(".xml") 
         select n 
         ).ToList(); 

然后,当你想流使用GetManifestResourceStream

例如

Dictionary<string, System.IO.Stream> resources = new Dictionary<string,System.IO.Stream>(); 
    foreach (string name in names) 
    { 
      resources.Add(name, asm.GetManifestResourceStream(name)); 

    } 

注:用VS 2010 Silverlight工具包4

+0

测试谢谢。感谢你的帮助。如果它只是一个资源呢?资源和嵌入式资源有什么区别?这些xml文件并不是相同的。 – 2011-04-08 16:33:53

+0

程序集中存在嵌入式资源。 (这是我的意思,虽然你的意思是“作为资源嵌入”)一个资源,如果我正确理解它遵循[包URI的计划](http://msdn.microsoft.com/en-us/library/aa970069.aspx) 。我不知道如何列举这些资源。抱歉 – 2011-04-08 17:59:01