2013-09-30 19 views
0

如何將數據序列化到xml中,XBMC是我的自定義類。將xml序列化到自定義類中,然後將該值添加到可觀察集合中

private static XBMC LoadXbmcShows(string XMlFile) 
{ 
    XBMC XBMCSShowsList; 
    TextReader Reader = new StreamReader(XMlFile); 
    XmlSerializer serializer = new XmlSerializer(typeof(XBMC)); 
    XBMCSShowsList = (XBMC)serializer.Deserialize(Reader); 
    Reader.Close(); 
    return XBMCSShowsList; 
} 

XBMC XBMCSList = LoadXbmcShows(_XMLFile); 

這是我如何創建ObservableCollection

readonly ObservableCollection<XBMC> myCollection 
    = new ObservableCollection<XBMC>() 

public ObservableCollection<XBMC> MyCollection 
{ get { return myCollection; } } 

我只是不知道如何從XBMCSList添加所有的數據集合。 我也很樂意嘗試以不同的方式做到這一點,如果任何人有任何想法。背後的主窗口

代碼:

namespace MySQlXML 
{ 
    public partial class MainWindow : Window 
    { 
     static string _XMLFile = @"C:\Dump\test.xml"; 

     List<string> ToCopylist = new List<string>(); 

     readonly ObservableCollection<XBMC> myCollection 
      = new ObservableCollection<XBMC>(); 

     public ObservableCollection<XBMC> MyCollection 
     { 
      get { return myCollection; } 
     } 


     public ObservableCollection<XBMC> MyCollection 
     { 
      get { return myCollection; } 
     } 

     XBMC XBMCSList = LoadXbmcShows(_XMLFile); 
     MyCollection.Add(XBMCSList); 

     public MainWindow() 
     { 
      InitializeComponent(); 

      Showlistbox.ItemsSource = XBMCSList.Show; 
      //foreach (XBMCShow show in XBMCSList.Show) 
      //{ 
      // Showlistbox.Items.Add(show.ShowName); 

      //} 
     } 

     private static XBMC LoadXbmcShows(string XMlFile) 
     { 
      XBMC XBMCSShowsList; 

      TextReader Reader = new StreamReader(XMlFile); 
      XmlSerializer serializer = new XmlSerializer(typeof(XBMC)); 
      XBMCSShowsList = (XBMC)serializer.Deserialize(Reader); 
      Reader.Close(); 

      return XBMCSShowsList; 
     } 
    } 
} 
+0

是'XBMCSList' **一個**'XBMC'還是幾個?變量名是有點誤導 – Default

+0

ps:與IDisposable對象(StreamReader是IDisposable),使用模式使用(var reader = new StreamReader(xmlfile)){...做sthng ...} 這樣,您的讀者將即使反序列化引發異常,也可以關閉並處置。 – Olivier

+0

這只是一個,如果你喜歡我可以添加類定義和XML文件的內容? – justinf

回答

0

你的意思是:我怎樣才能反序列化的結果添加到列表中?這裏就是我反序列化和增加在構造一個例子:

private static XBMC LoadXbmcShows(string XMlFile) 
{ 
    XBMC XBMCSShowsList; 
    TextReader Reader = new StreamReader(XMlFile); 
    XmlSerializer serializer = new XmlSerializer(typeof(XBMC)); 
    XBMCSShowsList = (XBMC)serializer.Deserialize(Reader); 
    Reader.Close(); 
    return XBMCSShowsList; 
} 

readonly ObservableCollection<XBMCShow> myCollection = 
    new ObservableCollection<XBMCShow>() 

public ObservableCollection<XBMCShow> MyCollection 
{ get { return myCollection; } } 

public MainWindow() 
{ 
    InitializeComponent(); 

    XBMC XBMCSList = LoadXbmcShows(_XMLFile); 
    myCollection = new new ObservableCollection<XBMCShow>(XBMCSList.Show); 
    Showlistbox.ItemsSource = myCollection; 
} 

從聊天我得到XBMC定義:

public partial class XBMC 
{ 
    private XBMCShow[] showField; 

    [System.Xml.Serialization.XmlElementAttribute("Show")] 
    public XBMCShow[] Show 
    { 
    get { return this.showField; } 
    set { this.showField = value; } 
    } 
} 

..和XAML:

<ListBox x:Name="Showlistbox"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding ShowName}" /> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

是的,這就是我想說的,我打斷你的代碼,它只是說'MySQlXML.MainWindow.MyCollection'是一個'屬性',但用於'類型'和這個錯誤'MySQlXML.MainWindow.XBMCSList'是一個'字段',但用於'類型' – justinf

+0

你在一個方法中運行這兩行嗎?你能分享代碼嗎? – meilke

+0

沒有我只是做這個'只讀的ObservableCollection MyCollection的=新的ObservableCollection () 公衆的ObservableCollection MyCollection的 { 得到{MyCollection的; } } XBMC XBMCSList = LoadXbmcShows(_XMLFile); MyCollection.Add(XBMCSList);' – justinf

相關問題