Ein XML zu erstellen ist mit Linq to XML recht einfach - ähnliches habe ich bereits in diesem HowTo beschrieben.
Der Unterschied ist eigentlich nur in der Verwendung und in dem dynamischen anlegen der Items zu finden.
Hier erstmal der Projektaufbau:
Damit unsere Besucher auch auf den RSS Feed aufmerksam werden, hab ich noch im HEAD einen Link auf den RSS-Feed gemacht:
<head runat="server">
<title>Untitled Page</title>
<link rel="alternate" href="Rss.ashx" type="application/rss+xml" title="" id="rss" />
</head>Die "Rss.ashx":
Das Grundgerüst erzeugen wir direkt in der ProcessRequest Methode:
public void ProcessRequest(HttpContext context)
{
XDocument document = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("rss",
new XAttribute("version", "2.0"),
new XElement("channel", this.CreateElements())
));
context.Response.ContentType = "text/xml";
document.Save(context.Response.Output);
context.Response.End();
}Hier wird die Deklaration gemacht und das XDocument wird in den Response.Output geschrieben. Unsere Items erzeugen wir an einer anderen Stelle - und zwar in der "CreateElements" Methode.
Die "CreateElements"-Methode:
Diese Methode gibt IEnumberable<XElement> zurück und kann somit direkt in den Baum eingefügt werden:
private IEnumerable<XElement> CreateElements()
{
List<XElement> list = new List<XElement>();
for (int i = 1; i < 100; i++)
{
XElement itemElement = new XElement("item",
new XElement("title", i),
new XElement("link", "http://code-inside.de")
);
list.Add(itemElement);
}
return list;
}Sehr einfach und schnell gemacht :)