Webif API liefert (in seltenen Fällen) inkorrektes XML

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Webif API liefert (in seltenen Fällen) inkorrektes XML

    Ich nutze das enigma2 Webif für ein (privates) Tool zum Erstellen von XMLTV (quasi ein EPG-Format, das Kodi versteht und tvheadend, neben anderen) aus dem EPG der Box. Bisweilen kommt es vor, dass die API Abfrage (reproduzierbar) inkorrektes XML liefert.

    Quellcode

    1. <ipderbox>/web/epgservice?sRef=1:0:1:CF0A:2718:F001:FFFF0000:0:0:0:


    Die gezeigte sref ist bei mir TELE 5. Antwort (snippet daraus)

    Quellcode

    1. <e2event>
    2. <e2eventid>3745</e2eventid>
    3. <e2eventstart>1555185600</e2eventstart>
    4. <e2eventduration>7800</e2eventduration>
    5. <e2eventcurrenttime>1555059915</e2eventcurrenttime>
    6. <e2eventtitle>Terra Formars</e2eventtitle>
    7. <e2eventdescription>Science-Fiction-Abenteuer, J 2016</e2eventdescription>
    8. <e2eventdescriptionextended>Regie: Takashi Miike. Darsteller: Hideaki It[[b]0x1C][/b], Emi Takei, Tomohisa Yamashita. Die Erde ist überbevölkert. Die Menschen wollen den Mars kolonialisieren. Um ihn bewohnbar zu machen, setzen sie dort eine Algenart und Kakerlaken aus, um sie zu verbreiten. 500 Jahre später schickt der skurrile Unternehmer Ko Honda, eine Handvoll Gangster zum Mars. Sie sollen nun den Menschen Platz machen und die Kakerlaken vernichten. Schauplatz Mars: Monsterkakerlaken vs Mensch.</e2eventdescriptionextended>
    9. <e2eventservicereference>1:0:1:CF0A:2718:F001:FFFF0000:0:0:0:</e2eventservicereference>
    10. <e2eventservicename>TELE 5</e2eventservicename>
    11. <e2eventgenre id="0"></e2eventgenre>
    12. </e2event>
    Alles anzeigen


    Da wo ich [0x1C] geschrieben habe, wird in der Tat das Zeichen mit dem Code 0x1C gesendet. Das ist illegal in xml. (Ich denke, das Zeichen ist auch schon im EIT, wo es meines Wissens legal ist). Ich weiß leider nicht, wo sich der xml-Generier-Code befindet. Der Patch sollte ganz einfach sein. Sowas in der Art

    Quellcode

    1. if (Zeichen < 0x20 && Zeichen != 0x9 && Zeichen != 0xa && Zeichen != 0xd)
    2. {
    3. // In XML Illegaler Zeichencode aus dem Steuercode-Bereich
    4. Zeichen überspringen (oder auch Leerzeichen ausgeben)
    5. }
    6. else if (…) // hier wird irgendwo im Code die Spezialzeichen-Behandlung stehen, die aus "<" dann "&lt" macht etc.


    In der Antwort auf epgservice wird xml version="1.0" angepriesen. In der Version gibt es wirklich keine Möglichkeit für die Zeichen. In xml 1.1 könnte man das über NCR (numeric character reference) machen. Spielt aber letztlich keine Rolle. Sind wohl eh alles Tippfehler. Nur - ein korrekter xml-Parser muss die Eingabe verweigern, ab der Stelle, an der das ungültige Zeichen kommt. (und expat tut das auch). Und selbstverständlich darf ein korrekter XML-Generator das Zeichen auch nie ausgeben.

    Ref: w3.org/TR/2008/REC-xml-20081126/

    [Ich denke, wer Vodafone Kabel hat, kann das mit TELE 5 reproduzieren - vielleicht sogar bei Astra. Kommt immer mal wieder vor].

    Hatte ich schon bei verschiedenen HDF-Versionen gesehen (und ist wohl in allen drin). Zuletzt getestet mit 6.3.155

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von buers ()

Unsere Partnerboards

^
Flag Counter