Verwenden Sie Html Agility Pack, um rss herunterzuladen und Elemente in einer Liste anzuzeigen

c# html-agility-pack rss windows-phone xml

Frage

Ich benutze HTML-Agility Pack Download von meinem RSS-Quelle, so weit ich kann es richtig herunterladen und ich kann auf alle Elemente mit SelectNode zugreifen, aber wie kann ich sagen, ich habe einen Titel in meinem RSS und es ist ein Knoten im Element Knoten kann ich es lesen, aber wie man es auf einer Listbox aufführt ?!

Ich benutze dies um die RSS herunterzuladen

HtmlWeb.LoadAsync("http://www.wpnovosti.com/feeds/posts/default?alt=rss", DownLoadCompleted);

void DownLoadCompleted(object sender, HtmlDocumentLoadCompleted e)
    {
        if (e.Error == null)
        {
            HtmlDocument doc = e.Document;
            if (doc != null)
            {
                foreach (HtmlNode rsstitle1 in doc.DocumentNode.SelectNodes("//title")) 
                {
                    var title = doc.DocumentNode.SelectNodes("//title");

                    if (rsstitle1 != null)
                    {
                            string titleText = rsstitle1.InnerText;
                            rsstitle.Text = titleText;
                            //MessageBox.Show(titleText);
                    }
                }
            }
        }
    }

dieses "rsstitle" ist ein Element auf der Hauptseite ein textBlock in einem Listenfeld benennt "listBox1", ich sehe den strig titleText im Textblock, aber ich sehe nur das letzte Element, es scheint wie es den ganzen Weg bis zum letzten Titel umkreist Die heruntergeladene rss-Artikelliste. Also meine Frage ist, wie kann ich eine Liste aller Titel machen. Die XML aus dem RSS sieht so aus:

HtmlWeb.LoadAsync("http://www.wpnovosti.com/feeds/posts/default?alt=rss", DownLoadCompleted);

void DownLoadCompleted(object sender, HtmlDocumentLoadCompleted e)
    {
        if (e.Error == null)
        {
            HtmlDocument doc = e.Document;
            if (doc != null)
            {
                foreach (HtmlNode rsstitle1 in doc.DocumentNode.SelectNodes("//title")) 
                {
                    var title = doc.DocumentNode.SelectNodes("//title");

                    if (rsstitle1 != null)
                    {
                            string titleText = rsstitle1.InnerText;
                            rsstitle.Text = titleText;
                            //MessageBox.Show(titleText);
                    }
                }
            }
        }
    }

Es gibt noch weitere 25 Elemente, die in Titel, Beschreibung, Pubdate und Link identisch sind. ich würde gerne haben:

Zuerst alle Titel in einer Liste auf der Hauptseite.

Zweitens binden alle Links an die Titel, wenn die Benutzer darauf tippen, geht es zu meiner anderen Seite, wo sie die URL an ein Webbrowser-Steuerelement übergeben kann.

Drittens, wenn es möglich ist, eine kurze Beschreibung unter dem Titel zu machen

Vierte zeigen den post body, der im "description" Element des rss bereits heruntergeladen ist, und lassen die Elemente wie sie sind auf dem rss, weil es Elemente wie Bilder und Tabellen und so weiter gibt, die ich brauche.

Beliebte Antwort

Anstatt Agility Pack zu verwenden (das Sie sicher verwenden können), sollten Sie .NET-Klassen verwenden, die Ihnen beim Parsen und Bearbeiten von RSS-Feeds helfen. Ich glaube, Sie möchten eine Art RSS-Reader-Anwendung erstellen. Es gibt viele Beispiele, die folgenden Links sollten Ihnen helfen:

http://code.msdn.microsoft.com/wpapps/RSS-Reader-in-Windows-afa86457 http://mobile.dzone.com/articles/build-rss-reader-windows-phone

Hoffe das hilft.

Lassen Sie uns wissen, ob dies Ihr Problem löst.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum