这是我的最终目标......获取此xml文件..
<?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#的新手,但我已经编写了一段时间,所以我真的只是想找人指点我这里正确的方向......
在google上看起来似乎人们似乎在阅读XML文件并遍历内容以填充列表视图组件。对于所有这些“数据集”和“绑定源”事物都可用的计数似乎不切实际。看起来应该有一种方法可以将XML文件加载到数据集中,然后将绑定源链接到数据集,然后最终将listview链接到绑定源(或者这些行中的某些内容)。虽然我可以似乎在任何这些组件上找到任何“setter”方法都可以做到这一点,我也在这些组件的“属性”窗口上下查找并没有成功。
答案 0 :(得分: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
的模板中使用这三个字段(来自您刚刚返回的匿名类型),并显示您的数据。
答案 1 :(得分:1)
您可以使用LINQ to XML - http://msdn.microsoft.com/en-us/library/bb387098.aspx。
答案 2 :(得分: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
属性。
答案 3 :(得分:0)
ObjectListView有一个DataListView,它是.NET ListView(WinForms)的数据绑定版本。 ObjectListView还会自动按艺术家或流派或其他任何显示列表的信息处理分组。
开源程序LyricsFetcher从XML读取整个iTunes库,并使用ObjectListView显示歌曲。加载10,000+并以这种方式显示它们在我的中档笔记本电脑上只需不到一秒钟。