RSS Feeds

  • Ist ja eigentlich egal um welchen RSS-Ticker es genau geht. Es soll ja Variabeln sein.
    Zum testen nehm ich jetzt mal:
    http://www.heise.de/newsticker/heise.rdf

    Ich denke mal ich muss den Inhalt der rdf Datei halt speichern und dann die einzelnen Items auswerten.
    Ich dachte nur vl. hat jemand schonmal sowas geschrieben. Man muss das Rad ja nicht neu erfinden. ;)

  • So ich habe mal einen Anfang gemacht:

    Kann mir mal bitte einer drüber schauen?
    Ich verstehe nicht wieso die Arrays leer sind.

    Spoiler anzeigen
    [autoit]

    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $nOffset = 1
    While 1
    Dim $title
    ;MsgBox zum testen
    MsgBox (0,"title", $title)
    _FileReadToArray("heise.rdf",$title)
    ;MsgBox zum testen
    MsgBox (0,"title", $title)
    $link=$title
    $title = StringRegExp($title, '<(?i)title>(.*?)</(?i)title>', 1, $nOffset)
    $link = StringRegExp($link, '<(?i)link>(.*?)</(?i)link>', 1, $nOffset)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 to UBound($title) - 1
    msgbox(0, "RegExp Test with Option 1 - "& $i, $title[$i])
    Next
    For $i = 0 to UBound($link) - 1
    msgbox(0, "RegExp Test with Option 1 - "& $i, $link[$i])
    Next
    WEnd

    [/autoit]

    Hier habe ich mal die heise.rdf noch reingepackt:

    Spoiler anzeigen


    Was ich also versuche ist, in der ersten MessageBox will ich die ganzen Titel ausgeben. In der zweiten die dazugheörigen Links.

  • Die Funktion kannte ich garnicht. Danke
    Ich hab nach einigem rumprobieren mal was von dir aufgeschnappt.
    Aber leider bekomme ich so immer nur den allerletzten Titel aus der Datei ausgegeben. Und wenn ich das

    [autoit]

    If StringInStr($lines[$i], 'title') <> 0 Then

    [/autoit]

    weg lasse bekomme ich garnichts ausgegeben. Das verstehe ich nicht so ganz.

    Spoiler anzeigen
    [autoit]

    #include <string.au3>
    #include <Array.au3>
    #include <file.au3>

    Dim $lines
    Dim $a
    If Not _FileReadToArray("heise.rdf", $lines) Then
    MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $i = 1 To $lines[0]
    If StringInStr($lines[$i], 'title') <> 0 Then
    $a = _StringBetween($lines[$i], '<title>', '</title>')
    EndIf
    Next
    _ArrayDisplay($a, "")

    [/autoit]
    • Offizieller Beitrag

    Hi,

    na wenn du es immer wieder kaputt machst :)

    Spoiler anzeigen
    [autoit]

    #include <string.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $a = _StringBetween(FileRead(FileOpen("heise.rdf", 0)), '<title>', '</title>')
    _ArrayDisplay($a, "")

    [/autoit]

    Edit: Noch zur Erklärung. Du gehst jede Zeile durch in der title enthalten ist und fragst, ob etwas zwischen title und /title ist, dann speichert er dir dies in einem Array. Klingt logisch, dass er dann zum Schluss nur den letzten Inhalt anzeigen kann, oder?

    So long,

    Mega

  • Ich muss das auch immer so kompliziert machen. :)

    So gleich das nächste Problem:
    Wenn ich mit StringBetween arbeite, schreibt er ja in den Index [0] schon gleich den ersten Wert.
    Wie kann ich denn nun die Anzahl der Indizes herausbekommen, die steht ja normalerweise im Index [0]?

  • hi,

    um auch mal ne Alternative zu zeigen ;) habe ich mal msxml bemüht.
    Vielleicht ist das ja auch ein brauchbare möglichkeit für Dich. Das Skript
    erledigt die Anforderung noch sehr ... rustikal ... aber das läßt sich ja recht einfach ändern :) .

    [autoit]


    #include <array.au3>
    InetGet("http://www.heise.de/newsticker/heise.rdf", @ScriptDir&"\heise.rdf",1,1)
    While @InetGetActive
    TrayTip("Downloading", "Bytes = " & @InetGetBytesRead, 10, 16)
    Sleep(250)
    Wend
    $xmlDoc=ObjCreate("Msxml2.DOMDocument.3.0")
    $xmlDoc.async="false"
    $xmlDoc.load(@ScriptDir&"\heise.rdf")
    $nodeCollection = $xmlDoc.selectNodes("*/item/title")
    Dim $aElements[$nodeCollection.length]
    For $i=0 To $nodeCollection.length -1
    $aElements[$i]=$nodeCollection.item($i).text
    Next
    _ArrayDisplay($aElements,"xPathResult")

    [/autoit]