2017-07-05 4 views
0

Ich bekomme Daten von der Nachrichtenwebsite RSS. Ich habe es von ca. 20 Nachrichtenseiten bekommen. Aber, 1 Website RSS ist anders. 20 RSS verwenden das gleiche Format, aber diese Website RSS ist anders. Wie kann ich "Eintrag" Knoten in diesem verschiedenen RSS suchen. Ich suche diese Situation im Internet, aber ich kann das gewünschte Ergebnis nicht finden. Kannst du mir helfen ?Wie verwende ich XmlNode.SelectSingleNode in verschiedenen RSS-Format?

Das normale Format von RSS ist

enter image description here

Dieser

meinen Code für normale Format RSS ist
XmlDocument xdoc = new XmlDocument(); 

     xdoc.Load("http://www.milliyet.com.tr/rss/rssNew/gundemRss.xml"); 

     XmlElement el = (XmlElement)xdoc.SelectSingleNode("/rss"); 

     if (el != null) 
     { 
      el.ParentNode.RemoveChild(el); 
     } 
     XmlNode Haberler = el.SelectSingleNode("channel"); 

     List<Milliyet> newMilliyet = new List<Milliyet>(); 


     foreach (XmlNode haber in Haberler.SelectNodes("item")) 
     { 
      var link = haber.SelectSingleNode("link").InnerText; 

      if (MilliyetHaberList.ContainsKey(link)) 
       continue; 

Dies ist diffrent Format RSS

enter image description here

Antwort

1

Ihre Fehler ist falsch fil e-Format, auf diese Weise funktioniert nicht, weil alle RSS-Link nicht XML-Datei, manchmal RSS-Link-Anwendung/rss + XML-Inhalt zurückgeben.

zum Beispiel: NTV

NTV rss Link: http://www.ntv.com.tr/gundem.rss

wenn Sie Postbote verwenden und diesen Link erhalten Sie Inhaltstyp sehen: application/rss + xml

sollten Sie wie folgt verwenden Httprequest

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.ntv.com.tr/gundem.rss"); 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

     StreamReader stream = new StreamReader(response.GetResponseStream()); 

     string responseString = stream.ReadToEnd(); 

     string xmlString = responseString.Replace("xmlns=\"http://www.w3.org/2005/Atom\"", ""); 

     XmlDocument xdoc = new XmlDocument(); 

     xdoc.LoadXml(xmlString); 

     var feedNode = xdoc.LastChild; 

     XmlNodeList entries = feedNode.SelectNodes("entry"); 
     List<NTV> NTVNewsList = new List<NTV>(); 


     foreach (XmlNode entry in entries) 
     { 
      NTV NTVInstance = new NTV(); 
      foreach (XmlNode child in entry.ChildNodes) 
      { 
       string childName = child.Name; 
       switch (childName) 
       { 
        case "title": 
         NTVInstance.Title = child.InnerText; 
         break; 
        case "summary": 
         NTVInstance.Description = child.InnerText; 
         break; 
        case "published": 
         string dateStr = child.InnerText; 
         NTVInstance.PubDate = Convert.ToDateTime(dateStr); 
         break; 
        case "link": 
         NTVInstance.Link = child.Attributes["href"].Value; 
         NTVInstance.Tags = GetTags(NTVInstance.Link); 

         break; 
        default: 
         break; 
       } 

      } 
+0

danke. Das ist Arbeit für mich. –

Verwandte Themen