Die neusten 5 Einträge einer XML Doc auslesen.



  • Erstmal Sorry für die Überschrift, leider ist mir nichts besseres zu meinem Problem eingefallen.

    Zu meinem Problem:

    Ich Möchte beim Auslesen der XML die neusten 5 Einträge auslesen egal ob das doc 50 Einträge hat oder doch nur 5.

    Ich hab das nun versucht über:

    private static int maxItems;
    public RssTicker() 
    { 
        maxItems = 5; 
    }
    public int MaxItems
    {
        get
        {
           return maxItems;
        }
        set
        {
           maxItems = value;
        }
    }
    
    XmlNodeList items = xmlDoc.SelectNodes ("//item"); //items auslesen
    foreach (XmlNode node in items) 
    {
      XmlElement elem = node as XmlElement;
      if (elem != null)
      {
         if (items.Count > 0)
         {
            int itemCount;
            if (items.Count < maxItems)
            {
              itemCount = items.Count;
              }
              else
              {
                itemCount = maxItems;
              try
              {
               //Ausgabe an das Menu
               //indem er titel und link speichert
               XmlElement title = elem.GetElementsByTagName("title")[0] as XmlElement;
               XmlElement link = elem.GetElementsByTagName("link")[0] as XmlElement;
               Link newLink = new Link(title.InnerText, link.InnerText);
               result.Add(newLink);
               }
               catch (Exception) //Schalten wir wieder aus da kein fehler da ist
               {
                 //MessageBox.Show (err.Message, "XML exception");
               }
             }
          }
       }
    }
    

    Funktionieren tut dies einwandfrei aber gibt trozdem immer alle aus. und nach ewigem rumsuchen hab ich mich nun doch dazu entschlossen euch zu fragen. warscheinlich ist mein Problem so simpel das ihr lachen werdet aber ich finde den Fehler nicht.

    Danke im v o r r a u s
    gruß b2!4n



  • dein Code ist ja bescheiden eingerückt 😉

    auf den ersten Blick
    glaube ich das du da was nicht richtig aus wertest...
    der Code macht wahrscheinlich immer dieses "result.Add" wenn er items.count >0 und items.count < 5 ist.
    du weißt zwar dieses itemcount zu aber das wird nicht ausgewertet
    oder ich versteh dein code net 😉
    lg



  • Du fügst genau dann einen Link hinzu, wenn items.Count > 0 && items.Count > 5, also in anderen Worten: wenn es mehr als 5 Items gibt verlinkst du und zwar alle, denn items.Count ändert sich ja nicht.



  • vielleicht sowas:

    http://msdn.microsoft.com/en-us/library/ms256086.aspx

    book[position() <= 3] The first three books (1, 2, 3).

    XmlNodeList items = xmlDoc.SelectNodes ("//item[position() <= 5]");
    


  • Nahasapeemapetilon schrieb:

    dein Code ist ja bescheiden eingerückt 😉

    auf den ersten Blick
    glaube ich das du da was nicht richtig aus wertest...
    der Code macht wahrscheinlich immer dieses "result.Add" wenn er items.count >0 und items.count < 5 ist.
    du weißt zwar dieses itemcount zu aber das wird nicht ausgewertet
    oder ich versteh dein code net 😉
    lg

    Die einrückung ist so schrecklich weil das normal noch weiter eingerückt ist und ich hab das ein gutes stück nach links gemacht einfahc mit makieren und löschen 😉
    -------------------------------

    loks schrieb:

    vielleicht sowas:

    http://msdn.microsoft.com/en-us/library/ms256086.aspx

    book[position() <= 3] The first three books (1, 2, 3).

    XmlNodeList items = xmlDoc.SelectNodes ("//item[position() <= 5]");
    

    vielen dank loks mit

    XmlNodeList items = xmlDoc.SelectNodes ("//item[position() <= 5]");
    

    geht das. Vielen dank.


Anmelden zum Antworten