Ejemplo n.º 1
0
        /// <summary>
        /// Outputs a string ready for RSS
        /// </summary>
        /// <returns>A string formatted for RSS</returns>
        public override string ToString()
        {
            var ItemString = new StringBuilder();

            ItemString.Append("<item><title>").Append(Utils.StripIllegalCharacters(Title ?? "")).Append("</title>\r\n<link>")
            .Append(Link).Append("</link>\r\n<author>").Append(Utils.StripIllegalCharacters(Author ?? ""))
            .Append("</author>\r\n");
            foreach (var Category in Categories)
            {
                ItemString.Append("<category>").Append(Utils.StripIllegalCharacters(Category)).Append("</category>\r\n");
            }
            ItemString.Append("<pubDate>").Append(PubDate.ToString("r", CultureInfo.InvariantCulture)).Append("</pubDate>\r\n");
            if (Enclosure != null)
            {
                ItemString.Append(Enclosure.ToString());
            }
            if (Thumbnail != null)
            {
                ItemString.Append(Thumbnail.ToString());
            }
            ItemString.Append("<description><![CDATA[").Append(Description).Append("]]></description>\r\n");
            if (GUID != null)
            {
                ItemString.Append(GUID.ToString());
            }
            ItemString.Append("<itunes:subtitle>").Append(Utils.StripIllegalCharacters(Title)).Append("</itunes:subtitle>");
            ItemString.Append("<itunes:summary><![CDATA[").Append(Description).Append("]]></itunes:summary>");
            ItemString.Append("</item>\r\n");
            return(ItemString.ToString());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="doc">XML element containing the item content</param>
        public FeedItem(IXPathNavigable doc)
            : this()
        {
            if (doc is null)
            {
                throw new ArgumentNullException(nameof(doc));
            }
            var Element          = doc.CreateNavigator();
            var NamespaceManager = new XmlNamespaceManager(Element.NameTable);

            NamespaceManager.AddNamespace("media", "http://search.yahoo.com/mrss/");
            Title       = Element.SelectSingleNode("./title", NamespaceManager)?.Value ?? "";
            Link        = Element.SelectSingleNode("./link", NamespaceManager)?.Value ?? "";
            Description = Element.SelectSingleNode("./description", NamespaceManager)?.Value ?? "";
            Author      = Element.SelectSingleNode("./author", NamespaceManager)?.Value ?? "";
            foreach (XPathNavigator TempNode in Element.Select("./category", NamespaceManager))
            {
                Categories.Add(Utils.StripIllegalCharacters(TempNode.Value));
            }
            var Node = Element.SelectSingleNode("./enclosure", NamespaceManager);

            if (Node != null)
            {
                Enclosure = new Enclosure(Node);
            }
            Node = Element.SelectSingleNode("./pubDate", NamespaceManager);
            if (Node != null)
            {
                if (DateTime.TryParse(Node.Value.Replace("PDT", "-0700"), out var TempDate))
                {
                    PubDate = TempDate;
                }
                else
                {
                    PubDate = DateTime.Now;
                }
            }
            Node = Element.SelectSingleNode("./media:thumbnail", NamespaceManager);
            if (Node != null)
            {
                Thumbnail = new Thumbnail(Node);
            }
            Node = Element.SelectSingleNode("./guid", NamespaceManager);
            if (Node != null)
            {
                GUID = new FeedGuid(Node);
            }
        }