Ist XML überbewertet?



  • zwutz schrieb:

    Einen XML-Parser hat man meist schon rumliegen, was man von anderen Textformaten nicht unbedingt behaupten kann).

    Und? Lisp-Parser gibt es seit der Steinzeit, und niemand verwendet die. Obwohl schon einige bemerkt haben, dass S-Expressions das gleiche sind wie XML.

    Also noch ein Format, damit ihr euch streiten könnt:

    SEXP:
    (lieferschein
      (nummer "00000815")
      (datum  1256633179)
      (empfänger
        (name "Dr. Foo")
        (vorname "Hans")
        (plz "01337")
        (ort "Musterdorf")
        (straße "Baumstraße 3")))
    


  • @Zwutz
    Genau das mein ich. Das JSON Beispiel ist um Längen besser lesbar als das XML und zudem auch noch kürzer (wenn auch ein wenig länger als csv);



  • byto schrieb:

    CSV hat keine klare Struktur. Das schreibt jeder, wie er grade lustig ist. Übermorgen vertauscht jemand Spalte Lieferscheinnummer mit Spalte Artikelgruppennummer und Dein Parser fliegt Dir um die Ohren.

    Bei XML definierst Du ein XSD-Schema und kannst sofort feststellen, ob die XML-Datei valide ist. Strukturfehler sind somit schonmal ausgeschlossen.

    Ja, die XML Tags wirken aufgebläht. Aber das ist meistens kein wirkliches Problem. Habe kürzlich eine 20 MB große XML Datei eingelesen und verarbeitet. Der Code war dank fertiger Tools in wenigen Minuten geschrieben. Die Funktion lief dann in ~1.2 Sekunden durch. Da war dann noch Zeit für ne Pause bis zur Frühstückspause. 🤡

    Das XML schreibt ja auch keiner per Hand. Und wenn man die Lieferscheinnummer in die falsche Spalte reinschreiben kann, dann kann man sie genausogut auch ins falsche Tag reinschreiben. Da nuetzen dir deine Schemas auch nichts. f'`8k

    Gruß, TGGC (Was Gamestar sagt...)



  • CSV = flach, XML & JSON = hierarchisch

    Ergo hinkt der Vergleich.



  • byto schrieb:

    CSV = flach, XML & JSON = hierarchisch

    stimmt, z.b. ist eine csv-datei nur eine einzelne tabelle, während eine xml-datei eine ganze datenbank sein kann. kommt immer drauf an was man will, manchmal ist csv auch ganz praktisch.

    µngbd: endlich mal eine sinnvolle anwendung für die lisp-syntax *fg*
    🙂



  • Scheppertreiber schrieb:

    Schau Dir mal Deine Beispiele an, was ein Overhead an sich ständig wiederholendem Text
    der keinen Informationsgewinn bringt. Es reicht, die Daten EINMAL zu definieren.

    Wie würdest du denn (X)HTML-Seiten beschreiben?

    Stell dir vor, du bist ein Druckdienst. Der Kunde schickt dir eine Stylesheetdatei, eine Schemadatei und danach 200k XML-Dateien.
    Die XML-Dateien enthalten die Daten, was die Daten darstellen und eventuelle weitere Informationen, die direkt mit den Daten zusammenhängen bzw. sich von XML-Datei zu XML-Datei unterscheiden (Datumsformat, etc), die Stylesheet-Datei enthält die Informationen, wie die Daten allgemein dargestellt werden sollen, also unabhängig von den darin enthaltenen Informationen (Farbe, Ausrichtung, Schrift, etc). Die Schemadatei enthält Informationen zur Fehlerkontrolle, also welche Daten drin sein dürfen bzw. müssen, sogar in welchem Format das Datum vorliegt kann darin festgelegt werden
    Du fütterst deinen XML-Parser dann nur mit der Stylesheet-Datei und kannst die 200k Dateien dann direkt druckfertig parsen und anhand der Schemadatei kann gleich noch auf Fehler überprüft werden

    Würde er Binärdaten schicken müsstet ihr euch erstmal auf ein Format einigen oder du dürftest jedesmal den Parser anpassen. PDF ist auch nicht recht klein (hat dafür aber andere Vorteile, z.B. das Einbetten von Schriften) und JSON ist für solche Fälle definitiv nicht gedacht

    XML mag überbewertet sein, nutzlos und in allen Bereichen ersetzbar ist es deswegen lange nicht



  • zwutz schrieb:

    Würde er Binärdaten schicken müsstet ihr euch erstmal auf ein Format einigen oder du dürftest jedesmal den Parser anpassen.

    binärdaten kann man in textformaten z.b. als 'base64' unterbringen. sowas wird oft gemacht und stellt keinen vor probleme.
    🙂



  • Genau das macht der Kunden.

    Was leider nicht bedeutet, daß keine Fehler drinnen sind 😉

    Immer diese Diskrepanz zwischen Theorie und Praxis ...



  • ;fricky schrieb:

    zwutz schrieb:

    Würde er Binärdaten schicken müsstet ihr euch erstmal auf ein Format einigen oder du dürftest jedesmal den Parser anpassen.

    binärdaten kann man in textformaten z.b. als 'base64' unterbringen. sowas wird oft gemacht und stellt keinen vor probleme.
    🙂

    Und dann? Hast Du immernoch ein Binärformat ohne feste Struktur.

    XML ist halt ein Standard für einen weit verbreiteten Anwendungsfall, nämlich die Kommunikation und Datenübermittlung über Systemgrenzen hinweg. Natürlich lässt sich über die Details streiten (z.B. die Syntax der XML-Tags). Das ändert aber nichts daran, dass XML und verwandte Technologien (XSD, XSL, XPath, ...) grundsätzlich gut und wichtig sind.

    Proprietäre Insellösungen können ja wohl schlecht als ernsthafte Alternative für so einen Standard genannt werden. 🤡



  • Scheppertreiber schrieb:

    Immer diese Diskrepanz zwischen Theorie und Praxis ...

    Die Praxis zeigt in vielen Fällen, dass es funktioniert. Aber es gibt natürlich immer DAUs, die mit Technologien nicht zurecht kommen. Damit muss man dann leider leben.
    Lösungsvorschlag meinerseits: Definier doch ein striktes XSD-Schema für Eure XML-Struktur. Kommt dann eine Datei im falschen Format, kannst Du den schwarzen Peter weiterschieben.



  • ;fricky schrieb:

    µngbd: endlich mal eine sinnvolle anwendung für die lisp-syntax *fg*

    Zum Glück gibt es Dich und c++.de und somit nach fünfzig Jahren endlich eine gute Anwendung für die Lisp-Syntax, sonst hätten wir Ärmsten bestimmt noch weitere fünfzig Jahre gewartet. Hoch fricky! Unser Erlöser!



  • Hi byto,

    da spielen auch noch andere Faktoren wie Laufzeit eine Rolle.

    Klar kann ich einen XML-Parser einsetzen ...

    Im Extremfall kann ich auf die Buchungssätze ganz verzichten und parse das PDF.
    Lesen und ablegen muß ich es eh. Ich bin dafür, XML da einzusetzen wo es sinnvoll
    und vertretbar ist. Es hat aber halt auch Nachteile.

    Tags mit Umlauten sind lustig. XML mit dem IE anschauen ist lustig. Was man da manchmal
    an Daten bekommt reizt zu Lachkrämpfen 🙂



  • byto schrieb:

    ;fricky schrieb:

    zwutz schrieb:

    Würde er Binärdaten schicken müsstet ihr euch erstmal auf ein Format einigen oder du dürftest jedesmal den Parser anpassen.

    binärdaten kann man in textformaten z.b. als 'base64' unterbringen. sowas wird oft gemacht und stellt keinen vor probleme.
    🙂

    Und dann? Hast Du immernoch ein Binärformat ohne feste Struktur.

    ich meinte ja auch nicht base64 als ersatz für XML. man kann z.b. base64-kodierte binärdaten in XML-elemente oder in CDATA-bereiche stecken.
    🙂



  • Lieber base13,8 - kriegt keiner raus was da versteckt ist 😃 😃 😃



  • ;fricky schrieb:

    ich meinte ja auch nicht base64 als ersatz für XML. man kann z.b. base64-kodierte binärdaten in XML-elemente oder in CDATA-bereiche stecken.
    🙂

    darf ich derzeit machen. Beliebige Dateien sollen zusammen mit ein paar Metainformationen über eine Schnittstelle verschickt werden, die nur mit Textdateien umgehen kann. XML war dabei die Vorgabe, ich hätts in dem Fall wohl eher nicht hergenommen



  • Scheppertreiber schrieb:

    da spielen auch noch andere Faktoren wie Laufzeit eine Rolle.

    Klar, aber es gibt extrem leistensfähige XML Parser.

    Tags mit Umlauten sind lustig. XML mit dem IE anschauen ist lustig. Was man da manchmal
    an Daten bekommt reizt zu Lachkrämpfen 🙂

    Tags mit Umlauten sind kein Problem, sofern das Encoding angegeben ist. Und zum IE... der ist nicht mal für Webseiten geeignet. Warum sollte man sich damit also XML Dateien angucken? 🤡



  • ;fricky schrieb:

    µngbd: endlich mal eine sinnvolle anwendung für die lisp-syntax *fg*
    🙂

    nman schrieb:

    Zum Glück gibt es Dich und c++.de und somit nach fünfzig Jahren endlich eine gute Anwendung für die Lisp-Syntax, sonst hätten wir Ärmsten bestimmt noch weitere fünfzig Jahre gewartet. Hoch fricky! Unser Erlöser!

    Hmm, ich werde den Veracht nicht los, dass alle die esoterischen Vorzüge, die man Lisp nachsagt, irgendwie mit meinem Beispiel zu tun haben. Lisp ist eben nicht nur eine Programmier- sondern auch eine Beschreibungs-Sprache.

    Übrigens hab ich schon die ein oder andere Website mit XML gemacht und mit Saxon & XSLT erzeugt. Da kann man schön mit Umlauten oder anderem Kodierungs-Käse umgehen. Auch Python hat Bibliotheken für XML, und ich hatte mit diesen Dingen noch nie XML-Probleme.

    Wenn man übrigens einen Interpreter für XYZ dort am Laufen hat, wo man die Daten einliest, kann man auch gleich Anweisungen für den Interpreter als Datenformat verwenden. Das hab ich mal in dem Lua-Buch gelesen:

    lieferschein (
      nummer ("00000815"),
      datum (1256633179),
      empfänger (
        name ("Dr. Foo"),
        vorname ("Hans"),
        plz ("01337"),
        ort ("Musterdorf"),
        straße ("Baumstraße 3")
      )
    )
    

    Wenn man die Zeilen in diesem Format hat, braucht man nur die entsprechenden Funktionen in XYZ definieren, und die Daten als Programm behandeln. 🙂



  • Ich sehe schon die glorreichen Videostream-Containerformate, die die Videodaten als Base64 in XML stecken.

    Oder mein persönlicher Liebling: Spiele-Level-Informationen in XML, anstatt einen Binärdump zu haben, den man beim Laden mit einem einzigen Read komplett ins VRAM bekommt. Ja, ich habe solche XMLs bereits gesehen.



  • dv_ schrieb:

    Ich sehe schon die glorreichen Videostream-Containerformate, die die Videodaten als Base64 in XML stecken.

    Kar, es gibt den Film, darin die Videospuren und Tonspuren, in den Videospuren Sync-Abschnitte, innerhalb derer Bilder und innerhalb derer Zeilen und darin Pixels. Was anderes, als XML geht für so baumartig-hierarchische Daten gar nicht! Außerdem ist das praktisch die einzige Möglichkeit, auf PCs, MACs und Linux so einen FIlm abzuspielen, gar nicht an Nicht-PC-Hardware zu denken. Was man da für unendliche Mühen bei Binärformaten hat wegen der endianess und weil das Ende der Datei fehlt. Ok, man kann nicht mehr im Bild eine DCT machen oder über den Zeitverlauf packen, nur noch den XML-text. Aber was solls? Dann nimmt auch das elende Raubkopien wieder ein wenig ab, wenn man pro Film einen Koffer voller Terabyteplatten braucht.



  • Man nimmt einfach das wozu es die passenden Werkzeuge gibt. Die Konfiguration in meinen Programmen speichere ich auch als XML, aber nur weil es XStream gibt.

    XStream stream = new XStream();
    sream.toXML(config);
    // ...
    config = stream.fromXML(filename);
    

    Wie speichert man den Meta-Informationen in JSON/Lisp ab? Also sowas hier, da muss man doch extra Eintraege dafuer machen?

    <lieferschein>
      <nummer [b]length="8"[/b]>815</nummer>
      <datum [b]format="dd.mm.YYYY"[/b]>1256633179</datum>
      <empfänger>
        <name [b]sortkey="foo"[/b]>Dr. Foo</name>
        <vorname [b]sortkey="hans"[/b]>Hans</vorname>
        <plz>01337</plz>
        <ort>Musterdorf</plz>
        <straße>Baumstraße 3</straße>
      </empfänger>
    </lieferschein>
    

Anmelden zum Antworten