如何从Windows Store(Metro Style)应用程序中的XML资源中读取数据?

时间:2012-09-04 06:59:20

标签: windows-8 microsoft-metro application-resource

我有一个Windows应用商店。我有一个包含数据的XML文件。我需要将此文件添加为我的应用程序的资源。我需要从这个文件中读取数据到XDocument。

1)将XML文件添加到项目时应该设置什么构建操作? (我认为这是“内容”)

2)如何从这个XML文件中获取XDocument对象?

2小时后我得到了这段代码:

public static class DataLoader {
    public static XDocument LoadFromXmlResource(string path){
        path.Replace('\\', '/');
        path.TrimEnd('/');
        string uriPath = "ms-appx:///MyApp/" + path;
        Task<StorageFile> operation = StorageFile.GetFileFromApplicationUriAsync(new Uri(uriPath)).AsTask<StorageFile>();
        StorageFile file = operation.Result;
        Task<string> fileReadingTask = FileIO.ReadTextAsync(file).AsTask<string>();
        string fileContent = fileReadingTask.Result;
        XDocument result = XDocument.Parse(fileContent, LoadOptions.None);
        return result;
    }
}

这是有效的,但我并不觉得它是正确的。

2 个答案:

答案 0 :(得分:0)

我现在找到了另一种方式。你可以尝试找另一个。

答案 1 :(得分:0)

这是引用应用程序内容的正确方法。您还可以将.resw文件添加到项目中,以便通过ResourceLoader存储用于在运行时加载的资源。

资源不同,因为它们被设计为对文化敏感,因此它们适用于按钮文本值的翻译等。

如果您不需要此功能,那么使用Build Action“Content”添加的资产是完美的,您可以使用ms-appx或ms-appdata URI方案来解决这些问题。

通过ms-appx打包内容

http://msdn.microsoft.com/en-us/library/windows/apps/Hh781215.aspx

通过ms-appdata

的可变数据

http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx

- 和 -

http://msdn.microsoft.com/en-us/library/windows/apps/Hh781229.aspx