RSS auslesen - _XMLDomWrapper.au3

  • Moin zusammen,

    Und auch schon das nächste Problemchen.

    Ich les den Spiegel RSS-Feed mit Hilfe der _XMLDomWrapper.au3 aus. Funktioniert auch soweit ganz gut. Habe nur das Problem, dass wenn mal ein Bereich fehlt, mir die Zuordnung zu den Titeln flöten geht.

    Bsp.:

    Spoiler anzeigen
    [autoit]

    Func _GetFeedData("http://www.spiegel.de/schlagzeilen/index.rss")
    Local $strXML = _INetGetSource($rss_source)
    Local $data_array[100][4]

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

    _XMLLoadXML($strXML, "")

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

    Local $title_node = "//rss/channel/item/title";
    Local $title_array = _XMLGetValue($title_node)

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

    Local $link_node = "//rss/channel/item/link";
    Local $link_array = _XMLGetValue($link_node)

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

    Local $description_node = "//rss/channel/item/description";
    Local $description_array = _XMLGetValue($description_node)

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

    Local $date_node = "//rss/channel/item/pubDate";
    Local $date_array = _XMLGetValue($date_node)

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

    For $i = 0 To UBound($title_array) - 1
    $data_array[$i][0] = _UTF8ToAnsi($title_array[$i])
    $data_array[$i][1] = $date_array[$i]
    $data_array[$i][2] = $link_array[$i]
    $data_array[$i][3] = _UTF8ToAnsi($description_array[$i])
    Next
    Return $data_array
    EndFunc ;==>_GetFeedData
    Func _UTF8ToAnsi($sUTF8)
    Local $iLen = StringLen($sUTF8)
    Local $stBuf = DllStructCreate("byte[" & $iLen * 2 & "];byte[2]")

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

    Local $aRet = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
    "int", 65001, "int", 0, _
    "str", $sUTF8, "int", -1, _
    "ptr", DllStructGetPtr($stBuf), "int", $iLen * 2 + 2)

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

    Local $stOut = DllStructCreate("char[" & $iLen & "];char")

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

    $aRet = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _
    "int", 0, "int", 0, _
    "ptr", DllStructGetPtr($stBuf), "int", -1, _
    "ptr", DllStructGetPtr($stOut), "int", $iLen + 1, _
    "int", 0, "int", 0)

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

    Return DllStructGetData($stOut, 1)
    EndFunc ;==>_UTF8ToAnsi

    [/autoit]

    Aktueller Fall ist, dass nicht überall der Bereich description vorhanden ist und es dadurch zu Array-Fehlern kommt. Die würde man ja noch in den Griff bekommen, aber wie bekomme ich es raus, wo die description fehlt, so daß die Zuordnung erhalten bleibt ??

    Ich steh da im Mom vol aufm Schlauch.

    Lg
    MrB