Xml oder Json?

Xml oder Json

  • Xml

    Stimmen: 1 20,0%
  • Json

    Stimmen: 5 100,0%

  • Anzahl der Umfrageteilnehmer
    5

MrKavatch

Mitglied
Hallo,
Ich wollte mich mal informieren was ihr für besser empfindet für Infos zu speichern.
Da ich das jetzt auch mal benutzen wollte / erlernen will wollte ich euch hier vorher Fragen was ich den eben benutzen soll (Was die meisten möglichkeiten hat oder was halt einfacher ist usw)

Vielen danke für alle Hilfe :)
Mfg
MrKavatch
 

mrBrown

Super-Moderator
Mitarbeiter
Unterschiedlich...

Für Konfigurationsdateien meistens eher XML (bzw. wenn möglich lieber einfache properties mit key=value), für alle sonstige Daten JSON. Finde ich persönlich leichter mit zu arbeiten und lesbarer.

Umgehen können sollte man aber mit beidem ;)
 

MrKavatch

Mitglied
Unterschiedlich...

Für Konfigurationsdateien meistens eher XML (bzw. wenn möglich lieber einfache properties mit key=value), für alle sonstige Daten JSON. Finde ich persönlich leichter mit zu arbeiten und lesbarer.

Umgehen können sollte man aber mit beidem ;)
Viel Dank für die Antwort.
Dürfe ich dich eventuell noch Fragen wo und wie ich am besten Json bzw Xml erlernen kann?
 

Saheeda

Top Contributor
Arbeite damit.
JSON und XML sind beides ziemlich einfache Sprachen, die man sehr schnell lesen und schreiben lernt.
Das schwierigste daran find ich ist, sich in einen entsprechenden Parser einzulesen, welcher die Daten umwandelt (für JSON nehme ich z.B. gern Gson).
Bei beiden Sprachen ist keine "Magic" dahinter, es ist einfach nur eine strukturierte Darstellung von Daten.

Überleg dir ein paar einfache Beispiele, und setze sie damit um.

Zur Syntax:
http://www.w3schools.com/xml/
http://www.w3schools.com/json/

Ich selbst arbeite wesentlich häufiger mit JSON, als mit XML, was aber auch daran liegt, dass ich selten Konfigurationen vornehmen muss. Dafür arbeite ich viel an Webanwendungen, die eben über JSON Daten versenden bzw. sie im JSON-Format erwarten.
 

Baldur

Aktives Mitglied
Falls deine Dateien nicht maschinell geschrieben werden, sondern von Menschen editiert werden sollen wäre ein Argument für XML, daß man dort auch recht einfach eine Validierung mittels DTD-Dateien einbauen kann.
Die DTD enthält recht einfache Regeln (z.b. daß das Tag "Person" immer ein Attribut "Name" enthalten muss oder optional ein Tag "Addresse" enthalten kann usw). IDEs wie NetBeans oder IntelliJ können dann auf Basis der DTD dein XML validieren und bieten sogar Codevervollständigung an.

Für Konfigurationsdateien meistens eher XML (bzw. wenn möglich lieber einfache properties mit key=value)
Das mit den Properties würde ich auch so unterstreichen. Reicht für Konfigurationsdateien meistens völlig aus und man kann wesentlich einfacher mit umgehen als wie mit XML oder JSON.
 

MrKavatch

Mitglied
Danke für alle antworten. Ich habe nun mit Xml angefangen aber habe dabei noch eine kurze Frage. Wie kann ich einzelnen daten abrufen. Also beispiel:
Code:
<shop>
  <artikel>
    <name>Artikel 1</name>
    <preis> 12.00</preis>
    <lageranzahl>45</lageranzahl>
  </artikel>
  <artikel>
    <name>Artikel 2</name>
    <preis> 54.00</preis>
    <lageranzahl>8</lageranzahl>
  </artikel>
  <artikel>
    <name>Artikel 3</name>
    <preis> 1.00</preis>
    <lageranzahl>434</lageranzahl>
  </artikel>
</shop>
Wie kann ich dabei jetzt Zb den Preis des 2 Artikels bekommen? (Und nichts anderes)
Mfg
 

Baldur

Aktives Mitglied
Ein fertiges Codebeispiel hab ich gerade nicht parat, daher einfach mal ein paar Stichworte, nach denen du googeln kannst ;)
  • XML DOM Parser: ist ein recht umfangreicher Parser, der dir das XML direkt in eine Datenstruktur einliest, die du dann über Schleifen, etc abarbeiten kannst.
  • XML SAX Parser: ist ein einfacherer Parser, der etwas umständlicher zu handhaben ist und keine Validierung bietet, dafür aber schneller und speichersparender ist
  • XQuery: Ist eine Art Abfragesprache um einzelne Daten aus einem XML-Dokument zu extrahieren. Also z.B. "gib mir den Namen des zweiten Artikels"
Wenn du wirklich nur einzelne Werte brauchst, kannst du es mit XQuery versuchen. Ansonsten nutz lieber den DOM Parser und lies das Dokument in eine eigene Datenstruktur ein (also so daß du z.B. am Ende eine List<Artikel> bekommst), die du dann einfacher abarbeiten kannst.
 

MrKavatch

Mitglied
Ein fertiges Codebeispiel hab ich gerade nicht parat, daher einfach mal ein paar Stichworte, nach denen du googeln kannst ;)
  • XML DOM Parser: ist ein recht umfangreicher Parser, der dir das XML direkt in eine Datenstruktur einliest, die du dann über Schleifen, etc abarbeiten kannst.
  • XML SAX Parser: ist ein einfacherer Parser, der etwas umständlicher zu handhaben ist und keine Validierung bietet, dafür aber schneller und speichersparender ist
  • XQuery: Ist eine Art Abfragesprache um einzelne Daten aus einem XML-Dokument zu extrahieren. Also z.B. "gib mir den Namen des zweiten Artikels"
Wenn du wirklich nur einzelne Werte brauchst, kannst du es mit XQuery versuchen. Ansonsten nutz lieber den DOM Parser und lies das Dokument in eine eigene Datenstruktur ein (also so daß du z.B. am Ende eine List<Artikel> bekommst), die du dann einfacher abarbeiten kannst.
Danke dafür, ich habe es auch schon versucht mit Sax aber ich verstehe das leider damit nicht so ganze:/
Aber noch eine sachen zu dem Beispiel davor. Ich habe noch eine anderes gefunden und bin mir nicht ganz sicher wofür man was benutzt.
Das beispiel:
Code:
<?xml version="1.0"?>
<party datum="31.12.01">
  <gast name="Albert Angsthase">
    <getraenk>Wein</getraenk>
    <getraenk>Bier</getraenk>
    <zustand ledig="true" nuechtern="false"/>
  </gast>
</party>
Muss ich sowas benutzen wenn ich einzelnen daten abrufen will oder kann ich auch bei dem vorherigen bleiben?
 

Baldur

Aktives Mitglied
Du meinst ob du lieber verschachtelte Elemente benutzt oder Elemente mit Attributen?
Beides hat seine Vorteile. Ein Element wie "getraenk" kannst du beliebig oft in deiner Struktur wiederholen. Für Attribute kannst du mittels DTD genauer festlegen, was erlaubt ist (z.B. daß "nuechtern" nur jeweils true oder false enthalten darf, oder ob es ein Pflichtattribut ist oder optional) Von daher solltest du das einfach von Fall zu Fall entscheiden, was du für geeigneter hältst.

Danke dafür, ich habe es auch schon versucht mit Sax aber ich verstehe das leider damit nicht so ganze:/
Probier mal den DOM Parser aus. Eventuell ist der für dich leichter zu verstehen, da er dir das Dokument schonmal in eine passende Struktur einliest. Da kannst du dann die einzelnen Elemente einfach per Schleifen durchlaufen.
Bei SAX musst du dich selbst um die Struktur kümmern, dafür ist er besser bei großen Dokumenten (groß im Sinne von 2-3-stelligen MB-Bereich)
 

Tobse

Top Contributor
Hier noch mein Senf: ich arbeite auch lieber mit JSON als mit XML. Ich erachte es aber bei beiden für notwendig, das Format richtig anzugeben weil sonst schnell Fehler auftreten können. Für XML ist das ganz klar DTD, für JSON gibt es so genannte JSON-Schemas (siehe Beispiel).
 

MrKavatch

Mitglied
Hier noch mein Senf: ich arbeite auch lieber mit JSON als mit XML. Ich erachte es aber bei beiden für notwendig, das Format richtig anzugeben weil sonst schnell Fehler auftreten können. Für XML ist das ganz klar DTD, für JSON gibt es so genannte JSON-Schemas (siehe Beispiel).
Danke ^^
Ich werde es morgen einfach auch mal ausprobieren und mal schauen welches ich für mich besse finde bzw für meien verwendungszwecke besser geeignent sind.
 

klauskarambulut

Bekanntes Mitglied
Was für ein Quatsch von Vorgestern ist das mit DTD?
XML definiert man und das nicht erst seit gestern mit XML-Schema also XSD-Dateien.

Jeder halbwegs anständige XML-Editor kann dir aus dem gegebenen XML eine XSD-Datei generieren, die man dann eben noch leicht anpassen kann oder muss. Aber fast selbsterklärend.

Mit der XSD-Datei generiert man dann Java-Code. Bei einer Javainstallation ist da das tool xjc dabei.
Da kommt dann Klasse Shop mit einer List<Artikel> raus und eine Klasse Artikel mit Name, Preis, etc.

Und mit dem in Java enthaltenen javax.xml.bind.Unmarshaller sind es ein paar Aufrufe die aus einer XML-Datei dann eine Instanz von Shop erzeugt.

und den Preis des zweiten Artikels bekommt man dann über shop.getArtikels().get(1).getPreis(), also ganz normale Java-Objekte.

Das funktioniert und ist auch gut dokumentiert. Das ganze läuft auch unter dem Namen JaxB (Doku, Tutorials etc.).

Probleme treten hier auf, wenn sich im Lauf der Zeit das XML-Format ändert. Also weitere Felder hinzukommen oder entfallen. Wenn das ganze aber recht stabil ist oder gar auf anerkannten XML-Standards basiert, ist das in der Regel kein Problem.

Ansonsten kann "manuelles" Verarbeiten via Sax, Dom oder Json bei im Kern gleichbleibenden Dokumenten eine bessere, Fehlertolerantere Lösung bieten.

Mit Jaxb ist auch der Weg von Java-Objekten hin zu einer XML-Datei via Marshaller möglich.
 

dzim

Top Contributor
Ich war früher absoluter XML-Fanboy. Heute finde ich die XSDs immer noch toll, aber leider sind die meisten Real-World-Anwendungen mit XML übertrieben kompliziert (ist ja eigentlich auch eher als M2M-Sprache gedacht, die zufällig noch lesbar sein kann), während man bei JSON meist immer noch auf vergleichbar einfache Strukturen setzt (was nicht heisst, dass sie schlecht sind). Und XML verursacht im Netzwerkbereich halt auch mehr Overhead, auch wenn das heutzutage wohl kaum noch ein K.O.-Kriterium sein wird.
Ich verwende heute zumeist JSON wegen der einfachen Lesbarkeit und weil Bibliotheken wie Jackson es einem recht einfach machen (für kleinere Datenmengen).
Am Ende aber: Ich kann mich nicht entscheiden. Ich find beides immer noch toll!
 

MrKavatch

Mitglied
Was für ein Quatsch von Vorgestern ist das mit DTD?
XML definiert man und das nicht erst seit gestern mit XML-Schema also XSD-Dateien.

Jeder halbwegs anständige XML-Editor kann dir aus dem gegebenen XML eine XSD-Datei generieren, die man dann eben noch leicht anpassen kann oder muss. Aber fast selbsterklärend.

Mit der XSD-Datei generiert man dann Java-Code. Bei einer Javainstallation ist da das tool xjc dabei.
Da kommt dann Klasse Shop mit einer List<Artikel> raus und eine Klasse Artikel mit Name, Preis, etc.

Und mit dem in Java enthaltenen javax.xml.bind.Unmarshaller sind es ein paar Aufrufe die aus einer XML-Datei dann eine Instanz von Shop erzeugt.

und den Preis des zweiten Artikels bekommt man dann über shop.getArtikels().get(1).getPreis(), also ganz normale Java-Objekte.

Das funktioniert und ist auch gut dokumentiert. Das ganze läuft auch unter dem Namen JaxB (Doku, Tutorials etc.).

Probleme treten hier auf, wenn sich im Lauf der Zeit das XML-Format ändert. Also weitere Felder hinzukommen oder entfallen. Wenn das ganze aber recht stabil ist oder gar auf anerkannten XML-Standards basiert, ist das in der Regel kein Problem.

Ansonsten kann "manuelles" Verarbeiten via Sax, Dom oder Json bei im Kern gleichbleibenden Dokumenten eine bessere, Fehlertolerantere Lösung bieten.

Mit Jaxb ist auch der Weg von Java-Objekten hin zu einer XML-Datei via Marshaller möglich.
Währe es eventuel möglich das du mir einen Link dazu gibt wo das alles nochmal eindeutig erklärt wird?
Bzw mir eine Code beispiel geben kannst?

Mfg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Json Objekt sinnvoll plätten? XML & JSON 1
W com.android.volley.ParseError: org.json.JSONException: End of input at character 0 of XML & JSON 6
L JSON auslesen und Labels in GUI verwenden XML & JSON 13
mananana Frage zu JSON XML & JSON 3
wofus JSON filtern nach bestimmten Wert XML & JSON 7
N JSON export String Unicode? XML & JSON 6
L Json reader XML & JSON 15
megusta JSON umschreiben (converter)? XML & JSON 4
P verschachteltes json verändern XML & JSON 3
Avalon JSON flatten und wieder in DTO konvertieren XML & JSON 21
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
Z json inkl. Array/Verschachtelung erstellen XML & JSON 2
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
Trèfle Formatierung v. JSON File XML & JSON 7
M json page 2 auslesen XML & JSON 1
K JSON mit GSON nutzen XML & JSON 4
S Java REST Client + Json XML & JSON 8
W Search Value in Json XML & JSON 6
K JSON-Bibliothek XML & JSON 5
M Großes Json Objekt benutzen XML & JSON 5
M Json auslesen XML & JSON 7
J JSON zu Java mit der GSON Google API XML & JSON 0
G Jackson JSON: Dynamische Serialisierung XML & JSON 6
W Json von URL Lesen (mit Gson Library) XML & JSON 3
W Json von URL Lesen XML & JSON 2
L Jackson JSON: Probleme beim einlesen XML & JSON 1
J JSon-Converter gesucht XML & JSON 2
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
J JSon <-> XML zwecks Validierung XML & JSON 4
M [JSON] Wie Splitten? XML & JSON 14
G Mit JSON Java und C# verbinden XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben