Umlaute aus XML Datei umwandeln

  • Hallo ,

    ich schreibe gerade an einem Script dass mir die geplanten Aufnahmen des DVB Viewers anzeigt .

    Das Proggie ist fertig und funzt , aber ich habe folgendes Problem .
    Die geplanten Aufnahmen werden aus einer XML Datei ausgelesen .

    Hier ein Beispiel :
    <entry name="0">Biathlon-Weltcup;1897005312|Das Erste;11.03.2009;17:50:00;20:09:00;4;-------;0;true;true</entry>
    <entry name="1">Bananas;1900150789|EinsFestival;14.03.2009;16:15:00;17:21:00;4;-------;0;true;true</entry>
    <entry name="2">Nonstop Nonsens (13/20);1900150789|EinsFestival;08.03.2009;20:05:00;20:56:00;4;-------;0;true;true</entry>
    <entry name="3">Tatort: Mauerbl&#xFC;mchen;1900150789|EinsFestival;08.03.2009;21:35:00;23:26:00;4;-------;0;true;true</entry>

    Das Problem sind die Umlaute in der XMl Datei .

    Bei Entry name3 Tatort: Mauerbl&#xFC;mchen muß ich aus dem &#xFC; ein ü machen .
    Bei anderen Umlauten endsprechend ÄÜÖ oder äüö ß .

    Ich lese jede Zeile aus und splitte dann nach Semikolon um das Datum , die Uhrzeit und den Namen der Sendung herrauszufinden .
    Dadurch dass in dem Mauerbl&#xFC;mchen ein Semikolon ist , gerät da die ganze Filterung durcheinander .

    Hier einmal der Code zum auslesen und Filtern :

    [autoit]

    ; Timer XML auslesen
    $file = FileOpen($TimerXML, 0)

    ; Check if file opened for reading OK
    If $file = -1 Then _KeineTasks()

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

    ; Read in lines of text until the EOF is reached
    $Z = 0
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    If StringInStr ( $line, "Entry name") Then
    $Z = $Z + 1
    $array = StringSplit($line, ">;")
    _ArrayAdd($TaskList, StringReplace($array[4], ".", "-") & " " & StringReplace($array[5], ":", "-") & " " & $array[2])
    SplashTextOn("", $TaskList[$Z],600,100)
    sleep(3000)
    SplashOff()
    EndIf
    Wend
    FileClose($file)

    [/autoit]

    Gruss Ede

    Einmal editiert, zuletzt von CrazyEde (8. März 2009 um 20:33)

  • das sind Hexcodes, die kannst du umwandeln ;)

    [autoit]

    $line = '<entry name="3">Tatort: Mauerbl&#xFC;mchen;1900150789|EinsFestival;08.03.2009;21:35:00;23:26:00;4;-------;0;true;true</entry>'

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

    ; hex - htmlentities ersetzen
    $codes = StringRegExp($line,"&#x([a-zA-Z0-9]+);",3)
    For $i = 0 To UBound($codes)-1
    ConsoleWrite($codes[$i] & @CRLF)
    $line = StringReplace($line, "&#x" & $codes[$i] & ";", ChrW(Dec($codes[$i])))
    Next
    ; ende
    MsgBox(0, '', $line)

    [/autoit]
  • Hallo progandy ,

    vielen Dank für Deine schnelle Hilfe .

    Es funzt Prima und ich habs auch Verstanden .

    Gruß Ede