Exemplo n.º 1
0
        /// <summary>
        ///		Añade las entradas OPML a las categorías
        /// </summary>
        private void AddOpmlEntries(DesktopFilesChannel channel, DesktopFilesEntry parent,
                                    Data.OPMLEntriesCollection opmlEntries)
        {
            foreach (Data.OPMLEntry channelEntry in opmlEntries)
            {
                DesktopFilesEntry entry = new DesktopFilesEntry();

                // Asigna las propiedades
                entry.Text = channelEntry.Title;
                if (string.IsNullOrEmpty(entry.Text))
                {
                    entry.Text = channelEntry.Text;
                }
                entry.URL           = channelEntry.URL;
                entry.NumberNotRead = 0;
                // Añade la entrada
                if (parent == null)
                {
                    channel.Entries.Add(entry);
                }
                else
                {
                    parent.Entries.Add(entry);
                }
                // Añade las entradas OPML hijas
                AddOpmlEntries(channel, entry, channelEntry.Entries);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///		Convierte un canal OPML a un canal DestopFiles
        /// </summary>
        public DesktopFilesChannel Convert(Data.OPMLChannel channel)
        {
            DesktopFilesChannel desktopChannel = new DesktopFilesChannel();

            // Asigna las propiedades al canal
            desktopChannel.DateCreated  = channel.DateCreated;
            desktopChannel.DateModified = channel.DateModified;
            desktopChannel.Title        = channel.Title;
            // Añade las entradas
            AddOpmlEntries(desktopChannel, null, channel.Entries);
            // Devuelve el canal
            return(desktopChannel);
        }
Exemplo n.º 3
0
        /// <summary>
        ///		Obtiene el builder XML de un objeto Atom
        /// </summary>
        private MLFile GetFile(DesktopFilesChannel channel)
        {
            MLFile file = new MLFile();
            MLNode node = file.Nodes.Add(DesktopFilesConstTags.cnstStrRoot);

            // Añade los atributos de la cabecera
            node.Attributes.Add("version", "1.0");
            // Obtiene el XML de los datos
            node.Nodes.Add(DesktopFilesConstTags.cnsttitle, channel.Title);
            node.Nodes.Add(DesktopFilesConstTags.cnstStrDateCreated,
                           DateTimeHelper.ToStringRfc822(channel.DateCreated));
            node.Nodes.Add(DesktopFilesConstTags.cnstStrDateModified,
                           DateTimeHelper.ToStringRfc822(channel.DateModified));
            // Obtiene el XML de los elementos
            AddEntries(node, channel.Entries);
            // Devuelve los datos
            return(file);
        }
Exemplo n.º 4
0
        /// <summary>
        ///		Interpreta un archivo
        /// </summary>
        public DesktopFilesChannel Parse(string fileName)
        {
            DesktopFilesChannel channel = null;
            MLFile fileML = new XMLParser().Load(fileName);

            // Lee los datos
            if (fileML != null)
            {
                foreach (MLNode node in fileML.Nodes)
                {
                    if (node.Name == DesktopFilesConstTags.cnstStrRoot)
                    {
                        // Crea el objeto
                        channel = new DesktopFilesChannel();
                        // Carga los datos
                        foreach (MLNode objMLDesktop in node.Nodes)
                        {
                            switch (objMLDesktop.Name)
                            {
                            case DesktopFilesConstTags.cnsttitle:
                                channel.Title = objMLDesktop.Value;
                                break;

                            case DesktopFilesConstTags.cnstStrDateCreated:
                                channel.DateCreated = objMLDesktop.Value.GetDateTime(DateTime.Now);
                                break;

                            case DesktopFilesConstTags.cnstStrDateModified:
                                channel.DateModified = objMLDesktop.Value.GetDateTime(DateTime.Now);
                                break;

                            case DesktopFilesConstTags.cnstStrOutline:
                                channel.Entries.Add(ParseEntry(objMLDesktop));
                                break;
                            }
                        }
                    }
                }
            }
            // Devuelve los datos del canal
            return(channel);
        }
Exemplo n.º 5
0
 /// <summary>
 ///		Graba los datos de un objeto OPML en un archivo XML
 /// </summary>
 public void Save(DesktopFilesChannel channel, string fileName)
 {
     new XMLWriter().Save(fileName, GetFile(channel));
 }
Exemplo n.º 6
0
 /// <summary>
 ///		Obtiene el XML de un canal DesktopFiles
 /// </summary>
 public string GetXML(DesktopFilesChannel channel)
 {
     return(GetFile(channel).ToString());
 }