如何使用 Windows Phone 8 SDK 将类序列化为 XML?

Posted

技术标签:

【中文标题】如何使用 Windows Phone 8 SDK 将类序列化为 XML?【英文标题】:How can I serialize a class to XML using Windows Phone 8 SDK? 【发布时间】:2013-12-13 02:31:22 【问题描述】:

我有一个属性 (_XMLPlaylist),我想在 XML 文件中序列化,如代码所示:

private void btn_Save_Click(object sender, RoutedEventArgs e)
    
        _Playlist.Pl_Name = tb_Name.Text.ToString();
        _XMLPlaylist.Playlists.Add(_Playlist);

        IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();

        using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(StudiCast.Resources.AppResources.Playlists, FileMode.CreateNew, isoStore))
        
            using (StreamWriter writer = new StreamWriter(isoStream))
            
                var ser = new XmlSerializer(typeof(XMLPlaylist));
                ser.Serialize(writer, _XMLPlaylist);
                writer.Close();
            
            isoStream.Close();
        
    

XMLPlaylist 类型如下所示:

class XMLPlaylist

    public XMLPlaylist()
    
        Playlists = new List<Playlist>();
    
    public List<Playlist> Playlists;

还有这样的类播放列表:

 class Playlist

    public Playlist()
    
        Casts = new List<Cast>();
    

    public string Pl_Name;
    public List<Cast> Casts;

'Cast' 拥有两个字符串。在 .NET 4 中,我在类名前使用了关键字 [Serializable],但不再有 [Serializable] 属性。

需要快速帮助!

编辑: 'var ser = new XmlSerializer(typeof(XMLPlaylist));' 处出错:

在 System.InvalidOperationException 中出现“System.Xml.Serialization.ni.dll”类型的未处理错误。

【问题讨论】:

【参考方案1】:

XmlSerializer 只能序列化公共类 - 使您的类 XMLPlaylist 公开(还有您想要序列化的所有属性/类 - 因此 Playlist 也应该是公开的)。

【讨论】:

天哪,就是这样。非常感谢。我几乎尝试了所有方法,但不是这个。再次,非常感谢。

以上是关于如何使用 Windows Phone 8 SDK 将类序列化为 XML?的主要内容,如果未能解决你的问题,请参考以下文章

windows phone 8 SDK中的背景音乐[C#]

Windows Phone SDK 7.8 中的 System.data.sqlclient

在 32 位操作系统上安装了 windows phone sdk 8.0 但不起作用?

Windows Phone 8 和 Microsoft Expression Blend 4

Windows Phone 8-私有API?

如何安装Windows Phone SDK 7.1 Release Candidate (RC)