2009-07-10 81 views
1

這是我的終極目標......藉此xml文件..的Visual C#2008,讀取XML文件並填充一個ListView

<?xml version="1.0"?> 
<Songs> 
    <Song> 
     <Name>Star Spangled Banner</Name> 
     <Artist>Francis Scott Key</Artist> 
     <Genre>Patriotic</Genre>  
    </Song> 
    <Song> 
     <Name>Blankity Blank Blank</Name> 
     <Artist>Something Something</Artist> 
     <Genre>Here here</Genre> 
    </Song> 
</Songs> 

,當我的應用程序啓動時將其加載到列表視圖組件。我也希望將「歌曲」按藝術家或流派分類。

我是新來的Visual C#,但我一直在編碼一段時間,所以我真的只是找人點我在這裏向正確的方向...

尋找在谷歌它看起來好像人們似乎閱讀XML文件並遍歷內容來填充列表視圖組件。數量上看起來不切實際的是存在所有這些「數據集」和「有約束力的來源」的東西。它看起來應該有一種方式,我將XML文件加載到數據集中,然後將綁定源鏈接到數據集,然後最後將listview鏈接到綁定源(或沿着這些行的東西)。雖然我可以在這些組件上看不到任何「setter」方法,我也在這些組件的「屬性」窗口中上下查看,但沒有成功。

+0

請添加您正在使用的WinForms或WPF標籤。 – Oskar 2009-07-10 08:02:02

回答

3

隨着Linq to XML,你可以這樣做以下:

XDocument loaded = XDocument.Load("myfile.xml"); 

var songs = from x in loaded.Descendants("Song") 
select new 
{ 
    Name = x.Descendants("name").First().Value, 
    Category = x.Descendants("artist").First().Value, 
    Genre = x.Descendants("genre").First().Value, 
}; //Returns an anonymous custom type 

MyListView.DataSource = songs; MyListView.DataBind(); 

現在你可以使用三個字段(從剛剛返回的匿名類型)在您的ListView的模板,您的數據將顯示。

+0

嗨安德烈亞斯我想加載相同的XML文件Treelistview任何想法。我已經發布了相同的問題堆棧http://stackoverflow.com/questions/42923047/bind-xml-file-to-treelistiview-in-objectlistview – John 2017-03-21 12:44:02

1

沒問題 - 請參閱System.Data.DataSet.ReadXml()它會將您的XML數據加載到DataSet

快速檢查:

DataSet mySet = new DataSet(); 
mySet.LoadXml("myfile.xml"); 
myTable = mySet.Tables[0]; 
myCols = myTable.Columns; 
Console.Writeline("Column Names: {0}, {1}, {2}", 
    myCols[0].ColumnName, myCols[1].ColumnName, myCols[2].ColumnName); 

... result ... 
Column Names: Name, Artist, Genre 

你應該分配myTable一些控制的.DataSource財產。

0

ObjectListView有一個DataListView,它是.NET ListView(WinForms)的數據綁定版本。 ObjectListView還可以自動處理按藝術家或流派或其他任何顯示列表的信息進行分組。

開源程序LyricsFetcher從XML中讀取整個iTunes庫,並使用ObjectListView顯示歌曲。加載10,000+並以這種方式顯示它們在我的中檔筆記本電腦上所用時間不到一秒鐘。

+0

您好Grammarian我想加載相同的XML文件Treelistview我應該怎麼做,任何想法。我已經發布相同的問題堆棧http://stackoverflow.com/questions/42923047/bind-xml-file-to-treelistiview-在-objectlistview – John 2017-03-21 12:44:37