0

我对编写 Windows 商店应用程序有点陌生。所以问题是如何将类的实例保存到 xml 或二进制文件中。我尝试了一些代码,但它不起作用。

希望有人能引导我朝着正确的方向前进。

4

2 回答 2

0

您可以使用此代码序列化您的实例

    /// <summary>
    /// Deserializes the XML.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="xml">The XML.</param>
    /// <returns>The instance</returns>
    public static T DeserializeXml<T>(this String xml)
    {
        var bytes = Encoding.UTF8.GetBytes(xml);
        using (var stream = new MemoryStream(bytes))
        {
            var serializer = new DataContractSerializer(typeof(T));
            return (T)serializer.ReadObject(stream);
        }
    }

    /// <summary>
    /// Serializes the specified instance.
    /// </summary>
    /// <param name="instance">The instance.</param>
    /// <returns>Xml</returns>
    public static String SerializeXml(this Object instance)
    {
        using (var stream = new MemoryStream())
        {
            var serializer = new DataContractSerializer(instance.GetType());
            serializer.WriteObject(stream, instance);
            stream.Position = 0;
            using (var reader = new StreamReader(stream))
            {
                var result = "<?xml version='1.0' encoding='UTF-8' ?>";
                result += reader.ReadToEnd();
                return result;
            }
        }
    }

下一步是将序列化的实例文本保存到文件中。

   var filename = "instance.txt";    
   var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists);
   var content = yourInstance.SerializeXml();
   await FileIO.WriteTextAsync(file, content, Windows.Storage.Streams.UnicodeEncoding.Utf8);

现在应该在您的 AppPackage-Local-Folder 中有一个名为的文件instance.txt,其中包含序列化为 xml 的当前实例。

于 2013-08-12T08:20:30.490 回答
0

可以Windows.Storage用来存储任何文件,用法类似于IO操作。MSDN

IsolatedStorage对于 Windows Phone 应用程序与此类似。

于 2013-08-10T23:05:43.117 回答