Ich verstehe den Zweck von XML, aber ich höre immer Leute, die sich darüber beschweren, wie SCHLECHT es ist. Ich verstehe nicht wirklich, was daran so schlimm ist? Normalerweise höre ich die Begriffe "aufgebläht" und "langsam" herumwerfen.
Aber ich denke als Programmierer, wofür verwenden Sie es hauptsächlich? Und halten Sie es wirklich für "schlecht" ... denn wenn ja, wird es von sehr vielen Menschen zum Transportieren von Daten verwendet ...
Antworten:
XML eignet sich hervorragend für das, was es sein soll - ein plattformneutrales, für Menschen lesbares Datenübertragungsprotokoll mit einigen Funktionen zur Durchsetzung der Datenvalidierung auf niedriger Ebene. Ich bezweifle, dass jemand, der XML auf diese Weise verwendet, eine echte Beschwerde hat. Ist es das schnellste Drahtformat? Nein, aber es gibt schlechtere Möglichkeiten. Ist es so schnell wie das Lesen Ihres benutzerdefinierten Binärformats? Nein, aber Ihre Geschäftspartner können es in jedem Stapel lesen, den sie verwenden.
Das Problem ist jedoch, dass Menschen - insbesondere die als Unternehmensarchitekten bekannte Rasse - böse sind und gute Dinge nehmen und sie schlecht machen. Im Fall von Xml war Xml zu Beginn dieses Jahrhunderts der universelle Hammer für jedes IT-Problem. Streuen Sie ein wenig Design von Committee ein, und Sie haben schreckliche Monstrositäten wie SOAP und oXML . Weder von denen auf Feinde, egal Freunde oder Kollegen gewünscht werden sollte.
quelle
XML ist nur ein Werkzeug, das es in vielen Varianten und Anwendungen gibt. XML zeichnet sich in einigen Dingen aus und in anderen. Ich denke, eines der Probleme ist, dass die Leute "Enterprise" XML gesehen haben, das unnötig komplex mit Namespaces und Mist ist (SOAP, irgendjemand?). Der Trick beim Entwerfen von XML-Formaten für den Menschen besteht darin, Daten eine echte Bedeutung zu verleihen, ohne sie für das Lesen zu überfordern.
Eines der Dinge, mit denen die Leute Probleme haben, ist, dass XML manchmal ein Zeichen oder eine fehlende Klammer verschluckt. Es gibt jedoch auch einen Vor- und einen Nachteil. Der Vorteil ist, dass Sie keine Mehrdeutigkeiten wie bei HTML haben, bei denen verschiedene Fälle von semi-ungültiger Syntax unterschiedlich interpretiert werden können.
Der Nachteil ist, dass es etwas schwieriger zu schreiben und zu lernen ist. Ich stimme zu, es muss argumentiert werden, dass das Web nicht so schnell zu groß geworden wäre, wenn HTML so streng wie XML wäre, aber ich würde auch argumentieren, dass wir uns freuen würden, wenn es heute so wäre. :)
Verwenden Sie es auch nicht für alles, nur weil Sie den Sinn und das Urteilsvermögen haben, es angemessen anzuwenden. Wenn Sie nur XML haben, sind Sie in der Regel immer eine XSLT-Transformation, die nicht Ihren Vorstellungen entspricht. :)
Ich würde argumentieren, dass das Format nur dann wirklich wichtig ist, wenn Menschen damit interagieren müssen. Wenn Sie ein Programm schreiben, das etwas serialisiert und irgendwohin sendet, wo es von einem anderen Ihrer Programme verwendet werden soll, wen interessiert es dann, wie es aussieht, solange es so effizient wie möglich ist? Verwenden Sie ein Binärformat oder Hasen und Einhörner für alles, was mir wichtig ist.
Vorteile von XML
Nachteile
Gute Verwendungen
Nicht so gut verwendet
quelle
Jeff Atwood hat einen ziemlich guten Blogeintrag bei XML: The Angle Bracket Tax, wenn Sie möchten, dass eine Quelle darüber spricht.
Die häufigsten Verwendungen, die ich dafür habe, sind:
Dienstleistungen miteinander zu reden. Beispielsweise muss eine Website, die ein Content-Management-System verwendet, einige Daten an ein Kundenbeziehungs-Management-System senden, und dies erfolgt mit XML.
Konfigurationsspeicher. Web.config und app.config sind gängige Beispiele, aber nAnt-Skripte können auch XML verwenden.
Ich denke nicht, dass es optimal ist, aber das allein macht es für mich nicht schlecht.
quelle
Zwei Gründe:
quelle
<Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription> </ProblemWorsening>
Es ist nicht die kompakteste Syntax, aber eindeutig die ausdrucksstärkste. Für Menschen lesbar? hängt davon ab, wie Sie Ihre Sprache gestalten. Die meisten Benutzer entwerfen keine Sprache für XML, sondern serialisieren Objekte nur als XML.
Es ist allgegenwärtig. Sie können eine XML-Datenbank mit XQuery abfragen, die Ergebnisse mit XSLT als XHTML oder Atom transformieren, Atom oder ein anderes XML-Format von anderen Webdiensten abrufen, XML von Benutzern mit XForms abrufen, mit XMLSchema, Relax NG oder Schematron validieren und verarbeiten XProc, speichern Sie es mit XQuery Update wieder in der Datenbank. Alle diese Tools verstehen XML, sodass keine Zuordnung zwischen verschiedenen Darstellungen erforderlich ist.
XML ist keine Serialisierungstechnologie, sondern ein allgemeiner Informationssatz.
quelle
Hier verwenden wir es für den Datenaustausch zwischen verschiedenen Systemen verschiedener Hersteller mit unterschiedlichen internen Darstellungen. Wir bauen ein XML-Transformations- / Austauschsystem auf, um die Daten hin und her zu transportieren. Dafür funktioniert es gut.
XML ist von Natur aus nicht schlecht, aber ich gebe zu, dass das Entwerfen einer "guten" Lösung mit XML nicht trivial ist.
quelle
"Die Essenz von XML ist folgende: Das Problem, das es löst, ist nicht schwer und es löst das Problem nicht gut." - Phil Wadler, POPL 2003
Meine persönliche Meinung ist, dass Sie, solange Sie sich nicht um Validierung, Schemata, XSLTs und den Rest hässlicher Dinge kümmern und die Größe der Dateien klein halten (ansonsten wird das Parsen langsam), einige gute Verwendungen von XML finden können (ein Beispiel) dient zur Konfiguration Ihrer Anwendung anstelle der Verwendung von INI-Dateien.
quelle
Nach meiner Erfahrung beschweren sich die Leute hauptsächlich über die Art und Weise, wie sie eingesetzt werden, nicht über die Technologie selbst.
Die aufgeblähten und langsamen Teile, über die sich die Leute beschweren, sind normalerweise die Bibliotheken / Methoden, die zum Abrufen von Informationen verwendet werden.
Ich verwende es zum Speichern kleiner Mengen strukturierter Informationen, die ich auf der Festplatte speichern möchte (ohne Datenbank oder binäre Serialisierung), oder um sie an eine andere Anwendung weiterzuleiten (die im Wesentlichen auch SOAP beschreibt).
quelle
Es ist gut, weil:
Es ist eine Standard- "Schnittstelle" , mit der mehrere heterogene Systeme kommunizieren können. Und ist "menschlich" lesbar (versuchen Sie es mit 5 MB XML)
Es ist schlecht, weil:
Sein aufgeblähtes, größeres = mehr Bandbreite = mehr $$
Es gibt andere Gründe, jeder hat eine andere Beschwerde ...
quelle
<advanceAcceptanceIndicator>Y</advanceAcceptanceIndicator>
Das Verhältnis Daten / Aufschlag ist so gering ... ich nenne das "aufgebläht". JSon zum Beispiel wäre nur die Hälfte aufgebläht:advanceAcceptanceIndicator: "Y"
. Es gibt auch die Tatsache, dass Text zwischen Tags gültig ist. Wenn Sie also XML lesen, müssen Sie entscheiden, was Sie mit dieser Cruft tun möchten\n\t\t\t
, und die Lösung besteht im Allgemeinen darin, sie einfach zu ignorieren, da Sie anfangs nie wirklich daran interessiert waren.value
?) Wäre wahrscheinlich auch überlegen, da die Leute versucht sein könnten, Leerzeichen zwischen zwei einzufügen Stichworte.Wie bei jeder anderen Technologie gibt es viele verfügbare Tools und Bibliotheken.
Ich mag XML nicht, vor allem, weil es irre ist, wenn Leute sagen, es ist von Menschen lesbar, sie scherzen, denke ich, oder sie haben nie wirklich eine XML gelesen, als man versucht hat, XML in ein Attribut einzubetten ... die XML-Entities machen es wirklich unleserlich. Darüber hinaus ist es erstaunlich, wie viel Speicherplatz aufgrund des redundanten End-Tags und der Möglichkeit, freien Text und Daten zu mischen, verschwendet wird ...
Aber:
Es hat auch den Vorteil, dass es meistens Vorrang hat. Wenn Sie bereits Web-Services in XML bereitstellen und nach einem neuen Service gefragt werden, geschieht dies wahrscheinlich in XML, da Sie das wissen.
quelle
data Person = Person { surname :: String, firstName :: String, age :: Int }
Wenn ich dann sehe, dassPerson "Doe" "John" 42
es auch lesbar ist, und vermeiden Sie viel Cruft, aber es ist näher an durch Kommas getrennten.XML ist eine schlechte Wahl für Dateien, die von Menschen gepflegt werden müssen. Es gibt keine visuelle Trennung zwischen dem Markup und dem Inhalt, was das Lesen erschwert. Es ist mühsam, ohne einen speziellen Editor richtig zu schreiben. Jeder Fehler in einem XML-Dokument ist schwerwiegend. Ein XML-Dokument kann nicht teilweise verarbeitet werden. Wenn eine XML-Datei ungültig ist, ist die resultierende Fehlermeldung häufig nicht hilfreich.
Für jede Datei, die von einem Menschen gepflegt werden muss, würde ich JSON, YAML oder Quellcode in einer interpretierten Sprache (Python, Ruby, Groovy usw.) bevorzugen. Wir haben festgestellt, dass die Verwendung von Groovy MarkupBuilder eine großartige Möglichkeit zum Erstellen von XML-Konfiguration für Legacy-Code ist. Eine andere gute Wahl ist das Erstellen einer domänenspezifischen Sprache. Mit Ruby, Groovy und vielen anderen Sprachen ist dies recht einfach.
quelle
Das Parsen ist relativ einfach und gleichzeitig für den Menschen lesbar.
Und einige nette Parser (zB Xerces {c ++}) sind leicht verfügbar.
quelle