/// <summary> /// Procedure to read in an xmltv file, storing programs as they are found /// </summary> /// <param name="XMLTVfilename">The filename to open</param> static void processXMLTV(string XMLTVfilename) { logger.Debug("Processing: " + XMLTVfilename); XmlTextReader xmlReader = new XmlTextReader(XMLTVfilename); xmlReader.Read(); // get the Root Node while (xmlReader.Read()) // read to end of file { // only interested in programme nodes if (xmlReader.Name == "programme") { // create the program TVProgramme newProg = new TVProgramme(progs.Count + 1, System.Guid.NewGuid().ToString("N")); newProg.startTime = DateTimefromXMLTVNZFormat(xmlReader.GetAttribute("start").Trim()); newProg.stopTime = DateTimefromXMLTVNZFormat(xmlReader.GetAttribute("stop").Trim()); newProg.channel = xmlReader.GetAttribute("channel").Trim(); // horrible way of recording when we are at the end of the programme XML tree int depth = xmlReader.Depth; xmlReader.Read(); while (xmlReader.Depth > depth) // keep going while we are 'inside' the program in XML { // only interested in elements for now if (xmlReader.NodeType == XmlNodeType.Element) { switch (xmlReader.Name.ToString()) { case "title": newProg.title = xmlReader.ReadString().Trim(); break; case "rating": newProg.rating = xmlReader.ReadString().Trim(); break; case "desc": newProg.description = xmlReader.ReadString().Trim().Replace('"', ' '); break; } } xmlReader.Read(); // get the next element within the program } progs.Add(newProg); // remember for later } } // we are done xmlReader.Close(); }
/// <summary> /// Procedure to read in an xmltv file, storing programs as they are found /// </summary> /// <param name="XMLTVfilename">The filename to open</param> static void processXMLTV(string XMLTVfilename) { logger.Debug("Processing: " + XMLTVfilename); XmlTextReader xmlReader = new XmlTextReader(XMLTVfilename); xmlReader.Read(); // get the Root Node while (xmlReader.Read()) // read to end of file { // only interested in programme nodes if (xmlReader.Name == "programme") { // create the program TVProgramme newProg = new TVProgramme(progs.Count+1, System.Guid.NewGuid().ToString("N")); newProg.startTime = DateTimefromXMLTVNZFormat(xmlReader.GetAttribute("start").Trim()); newProg.stopTime = DateTimefromXMLTVNZFormat(xmlReader.GetAttribute("stop").Trim()); newProg.channel = xmlReader.GetAttribute("channel").Trim(); // horrible way of recording when we are at the end of the programme XML tree int depth = xmlReader.Depth; xmlReader.Read(); while (xmlReader.Depth > depth) // keep going while we are 'inside' the program in XML { // only interested in elements for now if (xmlReader.NodeType == XmlNodeType.Element) { switch (xmlReader.Name.ToString()) { case "title": newProg.title = xmlReader.ReadString().Trim(); break; case "rating": newProg.rating = xmlReader.ReadString().Trim(); break; case "desc": newProg.description = xmlReader.ReadString().Trim().Replace('"',' '); break; } } xmlReader.Read(); // get the next element within the program } progs.Add(newProg); // remember for later } } // we are done xmlReader.Close(); }