Daten aus xml auslesen

  • Hallo!
    Und zwar möchte ich Daten aus einer *xml auslesen und dann in einen Text oder einer *ini zwischenspeichern um eine neue Anfrage bei einer 2ten xml zu starten.
    Die xml ist hier zu finden

    http://ofdbgw.w-root.de/search/hitch

    "Hitch" ist hierbei nur ein Beispiel.Die ganze Seite ist zu sehen unter http://ofdbgw.org/

    Nachdem die obengenannte Seite die ID für den oder die Filme ausspuckt soll anschließend folgende Seite aufgerufen werden,um die vollen Daten zu erhalten:

    http://ofdbgw.w-root.de/movie/69878

    Jedoch scheitere ich schon am 1 Punkt.Habe einmal folgendes probiert

    Spoiler anzeigen
    [autoit]

    #Include <String.au3>

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

    $file = FileOpen("hitch.xml", 0)

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

    ; Prüfen, ob Datei zum Lesen geöffnet wurde
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf
    $iniShowSerie = _StringBetween('hitch.xml', '<id>', '</id>')
    If Not FileExists("Settings.ini") Then
    IniWrite("Settings.ini", "Show", "Serie", $iniShowSerie)
    EndIf

    [/autoit]

    Jedoch steht in der ini nur [Show] Serie=

    Mein Gedankengang:
    - hitch.xml wird geöffnet
    - geprüft ob offen
    - inder hitch.xml nach Daten zwischen <id> und </id> gesucht und als Parameter $iniShowSerie hinterlegt
    - Paramter $iniShowSerie wird in die ini geschrieben

    Zur Info: Autoit ist Neuland für mich.

    Ciao

  • hier mal ein erster "Schubs":

    [autoit]

    #include <IE.au3>
    #include <String.au3>
    #include <Array.au3>
    $oIE = _IECreate("http://ofdbgw.w-root.de/search/hitch",0,1)
    $sHTML = _IEBodyReadText ($oIE)
    Local $aArray1 = _StringBetween($sHTML, '<id>', '</id>')
    _ArrayDisplay($aArray1, 'Default Search')

    [/autoit]

    Edit:
    hab's noch etwas erweitert.
    Ist natürlich nur "dirty" hingeschmissen...

    [autoit]


    #include <IE.au3>
    #include <String.au3>
    #include <Array.au3>
    $oIE = _IECreate("http://ofdbgw.w-root.de/search/hitch",0,1);Setze statt der 1 eine 0 dann wird das Fenster nicht angezeigt
    $sHTML = _IEBodyReadText ($oIE)
    Local $aArray1 = _StringBetween($sHTML, '<id>', '</id>')
    _ArrayDisplay($aArray1, 'Default Search');ist nur zur Kontrolle und zum Testen
    _IEQuit($oIE)
    Dim $aArray2[UBound($aArray1)]
    For $i = 0 To UBound($aArray1)-1
    $oIE = _IECreate("http://ofdbgw.w-root.de/movie/"&$aArray1[$i],0,1);Setze statt der 1 eine 0 dann wird das Fenster nicht angezeigt
    $aArray2[$i] = _IEBodyReadText ($oIE)
    _IEQuit($oIE)
    Next
    _ArrayDisplay($aArray2, 'Ergebnis Film '&$i)
    MsgBox(0, '', $aArray2[1]); als Beispiel ...

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (14. Februar 2010 um 00:23)

  • siehe mein erster Thread...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Das ganze geht auch mit RegExp.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Inet.au3>
    $sRead = _INetGetSource("http://ofdbgw.w-root.de/search/hitch")
    $aTmp = StringRegExp($sRead, "<id>(.+?)</id>\s<.+?>(.+)<.+?>\s<.+>\s<.+?>(.+)<.+?>", 3)
    For $i = 0 To UBound($aTmp) - 1 Step 3
    MsgBox(0, "", _
    "ID: " & $aTmp[$i] & @CRLF & _
    "Name: " & $aTmp[$i + 1] & @CRLF & _
    "Jahr: " & $aTmp[$i + 2] _
    )
    Next
    _ArrayDisplay($aTmp)

    [/autoit]
    Hier nochmal anders
    [autoit]

    #include <Array.au3>
    #include <Inet.au3>
    $sRead = _INetGetSource("http://ofdbgw.w-root.de/search/hitch")
    $aTmp = StringRegExp($sRead, "<id>(.+?)</id>", 3)
    For $i = 0 To UBound($aTmp) - 1
    $sInfo = _INetGetSource("http://ofdbgw.w-root.de/movie/"&$aTmp[$i])
    $aResult = StringRegExp($sInfo,"<titel>(.+)</titel>\s<.+?>(.+?)<[\w\W]+?<platz>(.+)<[\w\W]+?<genre>\s<.+?>(.+)<",3)
    _ArrayDisplay($aResult)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hallo!
    Danke für eure raschen ANtworten.Für einen Autoit Neuling ist das zumindest einmal einen Ansatz,wenn man überhaupt nicht weiß wie und wo man Anfangen soll.Lasse einmal das Thema noch geöffnet,falls ich noch etwas zu diesem Thema wissen möchte.

    Ciao