/// <summary> /// Carga las entradas de un nodo /// </summary> private EntryModelCollection LoadEntries(MLNode rootML) { EntryModelCollection entries = new EntryModelCollection(); // Carga las entradas foreach (MLNode nodeML in rootML.Nodes) { if (nodeML.Name == TagConference) { EntryModel entry = new EntryModel(); // Asigna las propiedades entry.Id = nodeML.Attributes[TagId].Value; entry.Title = nodeML.Nodes[TagName].Value; entry.Summary = nodeML.Nodes[TagDescription].Value; entry.Authors = nodeML.Nodes[TagAuthors].Value; entry.UrlImage = nodeML.Nodes[TagThumb].Value; entry.UrlVideo = nodeML.Nodes[TagVideo].Value; entry.UrlWebSite = nodeML.Nodes[TagWebSite].Value; entry.UrlSlides = nodeML.Nodes[TagSlides].Value; entry.PublishedAt = nodeML.Nodes[TagPublishedAt].Value.GetDateTime(DateTime.Now); entry.CreatedAt = nodeML.Nodes[TagCreatedAt].Value.GetDateTime(DateTime.Now); // Añade la entrada entries.Add(entry); } } // Devuelve la colección return(entries); }
/// <summary> /// Carga las entradas de una categoría /// </summary> internal EntryModelCollection LoadCategoryEntries(string xml) { EntryModelCollection entries = new EntryModelCollection(); MLFile fileML = new LibMarkupLanguage.Services.XML.XMLParser().ParseText(xml); // Carga el archivo if (fileML != null) { foreach (MLNode rootML in fileML.Nodes) { if (rootML.Name == TagRoot) { foreach (MLNode nodeML in rootML.Nodes) { if (nodeML.Name == TagConference) { EntryModel entry = LoadEntry(nodeML); // Añade el artículo a la colección if (!entry.Title.IsEmpty()) { entries.Add(entry); } } } } } } // Devuelve la colección de artículos return(entries); }
/// <summary> /// Obtiene las últimas entradas de la web /// </summary> private EntryModelCollection GetLastEntries(TrackModel track) { EntryModelCollection entries = new EntryModelCollection(); // Busca las entradas de todas las categorías foreach (CategoryModel category in track.Categories) { foreach (EntryModel entry in category.Entries) { entries.Add(entry); } } // Ordena por fecha de creación descendente entries.Sort((first, second) => - 1 * first.CreatedAt.CompareTo(second.CreatedAt)); // Obtiene sólo las primeras n entradas while (entries.Count > EntriesRssNumber) { entries.RemoveAt(entries.Count - 1); } // Devuelve la colección de entradas return(entries); }
/// <summary> /// Carga las entradas de un archivo /// </summary> internal EntryModelCollection Load(string fileName) { EntryModelCollection entries = new EntryModelCollection(); MLFile fileML = new LibMarkupLanguage.Services.XML.XMLParser().Load(fileName); // Carga las entradas if (fileML != null) { foreach (MLNode rootML in fileML.Nodes) { if (rootML.Name == TagRoot) { foreach (MLNode nodeML in rootML.Nodes) { if (nodeML.Name == TagEntry) { EntryModel entry = new EntryModel(); // Carga los datos entry.PublishedAt = nodeML.Attributes[TagPublish].Value.GetDateTime(DateTime.Now); entry.Title = nodeML.Nodes[TagTitle].Value; entry.UrlVideo = nodeML.Nodes[TagUrl].Value; entry.Summary = nodeML.Nodes[TagSummary].Value; entry.Authors = nodeML.Nodes[TagAuthor].Value; // Añade la entrada a la colección if (!string.IsNullOrWhiteSpace(entry.UrlVideo)) { entries.Add(entry); } } } } } } // Devuelve los objetos return(entries); }