create an rss feed in csharp
namespace RSSFeed
{
public class Feed
{
//<title></title>
//<link></link>
//<description></description>
//<language></language>
//<pubDate></pubDate>
//<lastBuildDate></lastBuildDate>
//<docs></docs>
//<generator></generator>
//<managingEditor></managingEditor>
//<webMaster></webMaster>
//<ttl></ttl>
private Tag title;
public Tag Title {
get { return title; }
set {
title = value;
title.Element = "title";
}
}
private Tag link;
public Tag Link {
get { return link; }
set {
link = value;
link.Element = "link";
}
}
private Tag description;
public Tag Description {
get { return description; }
set {
description = value;
description.Element = "description";
}
}
private Tag language;
public Tag Language {
get { return language; }
set {
language = value;
language.Element = "language";
}
}
private Tag pubDate;
public Tag PubDate {
get { return pubDate; }
set {
pubDate = value;
pubDate.Element = "pubDate";
}
}
private Tag lastBuildDate;
public Tag LastBuildDate {
get { return lastBuildDate; }
set {
lastBuildDate = value;
lastBuildDate.Element = "lastBuildDate";
}
}
private Tag docs;
public Tag Docs {
get { return docs; }
set {
docs = value;
docs.Element = "docs";
}
}
private Tag generator;
public Tag Generator {
get { return generator; }
set {
generator = value;
generator.Element = "generator";
}
}
private Tag managingEditor;
public Tag ManagingEditor {
get { return managingEditor; }
set {
managingEditor = value;
managingEditor.Element = "managingEditor";
}
}
private Tag webMaster;
public Tag WebMaster {
get { return webMaster; }
set {
webMaster = value;
webMaster.Element = "webMaster";
}
}
private Tag ttl;
public Tag Ttl {
get { return ttl; }
set {
ttl = value;
ttl.Element = "ttl";
}
}
private Collection<Item> itemNodes;
public Collection<Item> ItemNodes {
get { return itemNodes; }
set { itemNodes = value; }
}
private Image imageNodes;
public Image ImageNodes {
get { return imageNodes; }
set { imageNodes = value; }
}
public override string ToString() {
StringBuilder xmlText = new StringBuilder("");
xmlText.Append(("<?xml version=\"1.0\"?><rss version=\"2.0\"><channel>"));
xmlText.Append(title.ToString());
xmlText.Append(link.ToString());
xmlText.Append(description.ToString());
xmlText.Append(language.ToString());
xmlText.Append(pubDate.ToString());
xmlText.Append(lastBuildDate.ToString());
xmlText.Append(docs.ToString());
xmlText.Append(generator.ToString());
xmlText.Append(managingEditor.ToString());
xmlText.Append(webMaster.ToString());
xmlText.Append(ttl.ToString());
imageNodes.ToString();
foreach (Item tag in itemNodes)
{
xmlText.Append(tag.ToString());
}
xmlText.Append(("</channel></rss>"));
return xmlText.ToString();
}
}
public class Item
{
private Tag title;
public Tag Title {
get { return title; }
set {
title = value;
title.Element = "title";
}
}
private Tag link;
public Tag Link {
get { return link; }
set {
link = value;
link.Element = "link";
}
}
private Tag description;
public Tag Description {
get { return description; }
set {
description = value;
description.Element = "description";
}
}
private Tag pubDate;
public Tag PubDate {
get { return pubDate; }
set {
pubDate = value;
pubDate.Element = "pubDate";
}
}
private Tag guid;
public Tag Guid {
get { return guid; }
set
{
guid = value;
guid.Element = "guid";
}
}
public override string ToString() {
StringBuilder xmlText = new StringBuilder("");
xmlText.Append(("<item>"));
xmlText.Append("\t" + title);
xmlText.Append("\t" + link);
xmlText.Append("\t" + description);
xmlText.Append("\t" + pubDate);
xmlText.Append("\t" + guid);
xmlText.Append(("</item>\n"));
return xmlText.ToString();
}
}
public class Image {
#region Item template
//XMLBody
//<item>
// <title></title>
// <link></link>
// <description>description goes here</description>
// <pubDate>DateTime.Now("r")</pubDate>
// <guid></guid>
//</item>
#endregion
private Tag title;
public Tag Title {
get { return title; }
set {
title = value;
title.Element = "title";
}
}
private Tag link;
public Tag Link {
get { return link; }
set {
link = value;
link.Element = "link";
}
}
private Tag url;
public Tag Url {
get { return url; }
set {
url = value;
url.Element = "url";
}
}
public override string ToString() {
StringBuilder xmlText = new StringBuilder("");
xmlText.Append(("<image>"));
xmlText.Append(title.ToString());
xmlText.Append(link.ToString());
xmlText.Append(url.ToString());
xmlText.Append(("</image>"));
return xmlText.ToString();
}
}
public class Tag
{
private string element;
public string Element {
get { return element; }
set { element = value; }
}
private Collection<Attributes> attributes;
public Collection<Attributes> Attributes {
get { return attributes; }
set { attributes = value; }
}
private string text;
public string Text {
get { return text; }
set { text = value; }
}
private Collection<Tag> childNodes;
public Collection<Tag> ChildNodes {
get { return childNodes; }
set { childNodes = value; }
}
public Tag(string _text) {
text = _text;
childNodes = new Collection<Tag>();
attributes = new Collection<Attributes>();
}
internal Tag(string _element, Collection<Attributes> _attributes, string _text)
{
element = _element;
attributes = _attributes;
text = _text;
childNodes = new Collection<Tag>();
}
public override string ToString() {
StringBuilder xmlText = new StringBuilder("");
xmlText.Append(string.Format("<{0}{1}>{2}</{0}>\n", element, RenderAttributes(), RenderChildren()));
return xmlText.ToString();
}
private string RenderAttributes() {
StringBuilder xmlText = new StringBuilder("");
foreach (Attributes attribute in attributes)
{
xmlText.Append(attribute.ToString());
}
return xmlText.ToString();
}
private string RenderChildren() {
StringBuilder xmlText = new StringBuilder(HttpUtility.HtmlEncode(HttpUtility.HtmlDecode(StripHTML(text))));
foreach (Tag childNode in childNodes) {
xmlText.Append(childNode.ToString());
}
return xmlText.ToString();
}
private static string StripHTML(string inputString) {
const string HTML_TAG_PATTERN = "<.*?>";
return Regex.Replace
(inputString, HTML_TAG_PATTERN, " ");
}
}
public class Attributes
{
private string name;
public string Name {
get { return name; }
set { name = value; }
}
private string _value;
public string Value {
get { return _value; }
set { _value = value; }
}
public Attributes(string _name, string __value)
{
_value = __value;
name = _name;
}
public override string ToString() {
return string.Format(" {0}=\"{1}\"",name, _value);
}
}
}