0

私は Windows ストア アプリのプログラミングに少し慣れていないので、問題は、クラスのインスタンスを xml またはバイナリ ファイルに保存する方法です。いくつかのコードを試しましたが、機能しません。

誰かが私を正しい方向に導くことができることを願っています。

4

2 に答える 2

0

Windows.Storage任意のファイルを保存するために使用できます。使用法は IO 操作のようなものです。MSDN

IsolatedStorageWindows Phone アプリの場合と同様です。

于 2013-08-10T23:05:43.117 に答える
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);

instance.txtこれで、xml にシリアル化された現在のインスタンスを含むファイルが AppPackage-Local-Folder に呼び出されるはずです。

于 2013-08-12T08:20:30.490 に答える