Endlich kann ich Einträge aus meinem Blog auf meiner Website anzeigen. Nachdem ich den RssReader und Atom.net ausprobiert habe, bin ich beim Atomizer gelandet. Dieser erwies sich als sehr einfach zu nutzen. Der Codeausschnitt unten lädt, vorrausgesetzt die Automizer-Klasse ist im Projekt vorhanden, einen Atom-Feed und speichert seine Daten über den Umweg über ein String-Array in einem DataSet, welches als DataSource für den Repeater dient.
private
void InitializeAtomizer()
{
Atomizer.Atom atom = Atomizer.Atom.Create(new
Uri("http://meinBlog.de/atom.xml"), new Atomizer.generatorType(), "user", "password");
Atomizer.feedType myFeed = atom.GetFeed("http://meinBlog.de/atom.xml ");
DataSet mySource = new
DataSet();
mySource.Tables.Add("BlogPosts");
mySource.Tables["BlogPosts"].Columns.Add("title");
mySource.Tables["BlogPosts"].Columns.Add("url");
mySource.Tables["BlogPosts"].Columns.Add("date");
mySource.Tables["BlogPosts"].Columns.Add("name");
mySource.Tables["BlogPosts"].Columns.Add("email");
mySource.Tables["BlogPosts"].Columns.Add("content");
mySource.Tables["BlogPosts"].Columns.Add("created");
mySource.Tables["BlogPosts"].Columns.Add("id");
for (int i = 0; i < 5; i++)
{
string[] myValues = new
string[8];
myValues[0] = myFeed.entries[i].title;
myValues[1] = myFeed.entries[i].links[1].href;
myValues[2] = myFeed.entries[i].issued;
myValues[3] = myFeed.entries[i].author.name;
myValues[4] = myFeed.entries[i].author.email;
myValues[5] = myFeed.entries[i].contentValue.Text;
myValues[6] = myFeed.entries[i].created;
myValues[7] = myFeed.entries[i].id;
mySource.Tables["BlogPosts"].Rows.Add(myValues);
}
PostRepeater.DataSource = mySource;
PostRepeater.DataBind();
}
In der For-Schleife werden in diesem Fall die ersten fünf Elemente aus dem Weblog geholt. Meine InitializeAtomizer()-Methode lasse ich im Page-Load-Event meiner Seite ausführen. Im aspx-File reicht ein einfacher Repeater mit ein paar Labels und einem Anchor:
<asp:Repeater
ID="PostRepeater"
runat="server"
EnableTheming="True">
<ItemTemplate>
<h1>
<asp:Label
ID="title"
runat="server">
<a
href="<%# (DataBinder.Eval(Container.DataItem, "url")) %>"><%# (DataBinder.Eval(Container.DataItem,"title")) %></a></asp:Label>
</h1>
<asp:Label
ID="content"
runat="server">
<%# (DataBinder.Eval(Container.DataItem, "content")) %></asp:Label><p
/>
<asp:Label
CssClass="footer"
ID="footer"
runat="server">gepostet am
<%# (DataBinder.Eval(Container.DataItem,"date")) %></asp:Label>
</ItemTemplate>
</asp:Repeater>
Vielleicht finde ich am WE die Zeit, mir die knapp 1.800 Zeilen Code der 18 Klassen des Atomizer-Namespaces etwas genauer anzusehen.