XML或资源(.resx)文件

时间:2014-03-19 18:47:09

标签: c# xml windows-store-apps windows-8.1

我正在开发一个Windows 8.1商店应用程序并且我要添加一些文本,但我不确定使用资源文件或XML文件是否更好。

这是一个XML文件:

<?xml version="1.0" encoding="iso-8859-1"?>
<words>
    <word>
        <id>1</id>
        <name>Teacher</name>
    </word>
    <word>
        <id>2</id>
        <name>Pitcher</name>
    </word>

我必须反序列化一组单词(带有id和名称),并将其加载到单词列表中。我问是否更好地从XML或资源文件反序列化这些对象。

你推荐我什么?

4 个答案:

答案 0 :(得分:1)

由于Visual Studio与Windows 8.x项目中的.resx文件具有内置兼容性,因此我建议使用Ressource文件解决方案。就个人而言,我喜欢使用这种方法与优秀的ResXManager,这使得它非常简单。

此外,使用简单的DataBinding在XAML中使用这些单词会很简单,因为它不是内置的,因此XML解决方案可能会有点复杂。那么,为什么重新发明轮子?

答案 1 :(得分:1)

因为这是一个Windows 8.1商店应用程序,所以我就是这样解决这个问题的方法:

private static async Task<List<Word>> GetWordsFromFileAsync(string folder, string file)
{
    List<Word> list = null;

    StorageFolder storageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
    storageFolder = await storageFolder.GetFolderAsync(folder);

    // acquire file
    StorageFile storageFile = await storageFolder.GetFileAsync(file);

    Stream readStream = await storageFile.OpenStreamForReadAsync();
    XDocument xDoc = XDocument.Load(readStream);
    list = xDoc
            .Descendants("word")
            .Select(x => new Word 
            {
                Id = (int) x.Element("id"),
                Name = (string) x.Element("name")
            }).ToList();

    return list;
}

感谢@Selman22指出了正确的方向。

答案 2 :(得分:0)

我建议你LINQ to XML,首先创建你的课程:

public class Word
{
    public int Id { get; set; }
    public string Name { get; set; }

}

然后像这样填充你的列表:

var words =  XDocument.Load("path")
                .Descendants("word")
                .Select(x => new Word 
                  {
                     Id = (int) x.Element("Id"), 
                     Name = (string) x.Element("Name")
                  }).ToList();

答案 3 :(得分:0)

创建一个样本数据类,用于存储XML元素值:

public class Word
{
string name;
string id;

public string Name
{
    get { return name; }
    set { name= value; }
}

public string ID
{
    get { return id; }
    set { id= value; }
}
}

这是您从XML中读取值的方式,

             var xElem = XElement.Load("XML/books.xml");
             var result=
                from elem in xElem.Descendants("Word")
                orderby elem.Attribute("name").Value
                select new Book
                {
                    Name = elem.Attribute("name").Value,
                    Id = elem.Element("Id").Value, 

                };