i have a playlist(s) that i need to parse and i need to do stuff like set them in list box etc. here is the .xspf
<?xml version="1.0" encoding="UTF-8"?> <playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1"> <title>Playlist</title> <trackList> <track> <location>file:///E:/Downloads/video1.mp4</location> <duration>681493</duration> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>0</vlc:id> </extension> </track> <track> <location>file:///E:/Downloads/video2.mp4</location> <duration>614585</duration> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>1</vlc:id> </extension> </track> <track> <location>file:///E:/Downloads/video3.mp4</location> <duration>220629</duration> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>2</vlc:id> </extension> </track> </trackList> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:node title="oooh.xspf"> <vlc:node title="BJLL"> <vlc:item tid="0"/> <vlc:item tid="1"/> </vlc:node> <vlc:node title="Solo"> <vlc:item tid="2"/> </vlc:node> </extension> </playlist> i got to work parsing the location duration and the id.
but now i need to get the value of the "title"(the folder) attribute and all "tid"(the id) numbers in every title :
BLJJ
0
1
Solo
2
So i can sort files to folders by their ids
here is how i parse the location duration and id :
class PlaylistItem { public string location { get; set; } public string extensions { get; set; } public string duration { get; set; } } private void button2_Click(object sender, EventArgs e) { XDocument xdoc = XDocument.Load(@"1.xspf"); XNamespace ns = ((XElement)xdoc.FirstNode).Name.Namespace; XNamespace nx = ("http://www.videolan.org/vlc/playlist/ns/0/"); List<PlaylistItem> fileSignatures = (from file in xdoc.Descendants(ns+ "track") select new PlaylistItem { location = (string)file.Element(ns + "location").Value, extensions = (string)file.Element(ns + "extension").Value, duration = (string)file.Element(ns + "duration") }).ToList(); foreach (var item in fileSignatures) { if (item.duration != null) { listBox1.Items.Add("Duration: " + item.duration + " id: " + item.extensions); listBox1.Items.Add("File: " + item.location); } else { } } }
No comments:
Post a Comment