19 June 2008 HowTo, LINQ, LINQ to XML, RSS, Xml Robert Muehsig

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:

image

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 :)

[ Download Source Code ]


Written by Robert Muehsig

Software Developer - from Saxony, Germany - working on primedocs.io. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de