Laden...

Ideale Aufbau eines XML Struktur

Erstellt von Darty1971 vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.874 Views
D
Darty1971 Themenstarter:in
21 Beiträge seit 2016
vor 7 Jahren
Ideale Aufbau eines XML Struktur

Hallo zusammen,

für mein Trainingsprogramm (Darts) habe ich vor die Trainingsfortschritte bei Bedarf zu speichern. Mein Plan ist das ich es in einer XML speichere (da ich zuvor xml nicht wirklich nutze und es erlernen wollte). Die Konfiguration File der Anwendung habe ich auch bereits in xml. Da werden ja "nur" das zuletzt eingestellte Namen u.s.w. festgehalten. Funktioniert soweit gut.

Nun aber zu den ich nenne es mal Statistik.xml
Meine erste Vorstellung von der xml Datei sah so aus:


<statistiken>
   <Max Mustermann>
      <Trainingsprogramm 1>
         <DatumUhrzeit>01.01.01. 8:00
            <ArrayWert mit 21 Werten>
            </Array...>
         </DatumUhrzeit>
         <DatumUhrzeit>01.01.01. 9:00
            <ArrayWert mit 21 Werten>
            </Array...>
         </DatumUhrzeit>
      </Trainingsprogramm 1>
   </Max Mustermann>
</statistiken>

Mein Plan war das immer der Name aus der Anwendung als index gelten soll. (scheiterte aber schon mal weil ich festgestellt habe das Leerzeichen nicht erlaubt sind). Danach dann das Trainingsprogramm welche ausgeführt wurde, dann die Datenzeilen die aus Datum/Uhrzeit und seine Werte bestehen. Im Trainingsprogramm 2 wäre ein ähnlciher Aufbau, aber da sind nur 10 Werte in dem Programm. Wenn aber Max nochmals zu spätere Zeitpunkt Trainingsprogramm 1 ausgeführt hat wird dann die Datenzeile hinzugefügt. u.s.w.
Und das natürlich dann für mehrere Spieler (Wahrscheinlich wird für den privaten Gebrauch immer nur 1 Spielernamen sein, aber im Verein können dann mehrere Spieler sein)

Ich hab es wahrscheinlich zu kompliziert und unverständlich erklärt, aber ich hoffe ich kann mit der Frage kommen: Nun wie würdet ihr das den aufbauen ? Ich war auch am überlegen ob es geschickter wäre das jeder Spieler sein eigenes XML Statistik File bekommt ? Oder es doch alles in einem File zu packen.

Ich möchte auf jedenfalls zum späteren Zeitpunkt nicht nur die Statistiken in der Anwendung ansehen können, sondern auch mal einzelne herauslöschen, oder komplett zu leeren.

Ich hoffe ich habe das richtige Unterforum benutzt für den Thread.

Viele Grüße
Darty1971

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Darty1971,

wieso schaust du dir nicht mal XML Extensible Markup Language an und schaust wie es aufgebaut ist? Da kann man sich schon viel abschauen. Am Ende sollte es valide sein. Das lässt sich auch prüfen. (Bspw auf http://www.xmlvalidation.com/?L=2).

Du kannst dir auch mal XML (De)Serialisierung anschauen. Dann arbeitest du in deinem Code mit normalen Objekten, schreibst die im XML und brauchst dich mit dem XML direkt kaum zu beschäftigen. Wenn du genau das aber willst lässt sich damit auch sehr viel lernen.

Einführung in die XML-Serialisierung

Gruss

Coffeebean

2.298 Beiträge seit 2010
vor 7 Jahren

Hallo Darty1971,

zusätzlich zu dem was Coffeebean schrieb, wäre eine optimaler Xml-Aufbau eher folgendes:


<statistiken>
      <Trainingsprogramm id="1">
            <Step datetime="21.04.2016 11:04:03">
                    <SubSteps>
                           ...
                    </SubSteps>
            </Step>
      </Trainingsprogramm>
      <Trainingsprogramm id="2">
      ..
      </Trainingsprogramm>
</statistiken>

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

D
Darty1971 Themenstarter:in
21 Beiträge seit 2016
vor 7 Jahren

Hallo Coffeebean,

vielen Dank für Deine Antwort. Ich habe die Links erst mal "überflogen", werde es aber noch genauer lesen.

Serialisierung mach glaube ich nur Sinn wenn es immer den gleichen Aufbau hat oder ? Weil die Klassenobjekte die ich habe immer nur für 1 Trainingeinheit lang "leben". Ausserdem habe ich dann verschiedene Objekte (verschiedene Spiele) die inhaltlich varieren und nicht identisch sind.
Wie gesagt ich lese die Links nochmals durch. Danke erst mal.

Hallo inflames2k,

danke für den Vorschlag. Wie würdest Du den "Namen des Spieler" unterbringen ? Eigentlich sollte dann der Spieler der Haupt Tag sein, und dann den entsprechenden Trainingsprogramm id wie Du vorgeschlagen hast, und dann kommen Datum Tag und deren unterwerte (vom Training)
Oder würdest Du lieber für jeden Spieler sein eigenes xml Datei erstellen ?

Viele Grüße
Darty1971

W
872 Beiträge seit 2005
vor 7 Jahren

Wie Coffeebean es sagt - Deine Datenstruktur muss zu Deinen funktionalen Anforderungen an Deine Applikation passen.
Der XML Serializer macht dann die Arbeit automatisch.
Die menschliche Lesbarkeit von XML ist ein altbekanntes Problem - deswegen wird es auch immer mehr von JSON und anderen Formatten verdrängt.

D
Darty1971 Themenstarter:in
21 Beiträge seit 2016
vor 7 Jahren

Hallo weismat,

vielen Dank für den Hinweis auf JSON. Kannte ich noch gar nicht und das sieht wirklich interessant aus. Ebenso finde ich es auch "lesbarer".
Es hat doch keine Nachteile gegenüber xml ? Sehe in Moment eher nur Vorteile.

Viele Grüße
Darty1971

3.003 Beiträge seit 2006
vor 7 Jahren

Es ist nicht validierbar gegen ein Schema. Es kennt anders als XML keine Typisierung. Es existiert keine Umformung wie XSLT. Allgemein gesagt: der Einsatzzweck ist nur eine Untermenge von dem, was XML kann.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Darty1971,

was heisst "Nachteile"...das kommt immer drauf an. Die Vorteile überwiegen halt schon extrem. Es muss halt für deinen Usecase passen. Streng genommen ist JSON ein Datenformat. XML ist eine Sprache.

Der Ansatz ist ein bisschen ein anderer. Es kennt beispielsweise weniger Datentypen (String, Boolean, Array, Object...)

Aber eine Diskussion XML vs. JSON sollte man nicht hier sondern in einem anderen Thread aufmachen 😉

Gruss

Coffeebean

3.003 Beiträge seit 2006
vor 7 Jahren

Grobe Richtlinie (bitte jemand laut schreien, wenn ich zu sehr verallgemeinere 😁 ).

  • wenn es dir nur um Datenaustausch geht, und du rein prinzipiell auch ohne Probleme das Ganze als Plaintext, z.B. in einer Art .ini-Dateiformat, übertragen könntest, dann nimm JSON.
  • für alles andere nimm XML.

Dank der Werkzeuge in .NET geht aber auch die Umstellung von JSON auf XML oder andersherum sehr schnell.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

16.807 Beiträge seit 2008
vor 7 Jahren

Json hat etwas andere Primärziele als XML.
So unterstützt Json keine Styles und keine Validierung, was im XML Bereich, gerade beim Datenaustausch aber wichtig ist bzw wichtig sein kann.

Bei Json verzichtet man auf diese Möglichkeit und setzt auf den geringeren Overhead.
Json ohne OData bei APIs halte ich zB. daher auch als Risiko, das man problemlos mit Disziplin vermeiden kann.
Leider aber die wenigsten tun.

Zunächst ist es mal wichtig XML zu beherrschen, da es viel verbreiteter als Json ist.
Wer dann XML begriffen hat, der kann auch mit Json umgehen.

Ansonsten gelten bei XML die gewöhnlichen Standards und Best Practises beim Datenaustausch

  • Uhrzeitwerte ISO 8601
  • Wenn möglich keine untypisierten Informationen, ansonsten muss anhand des Namens die Wertzugehörigkeit klar sein
D
Darty1971 Themenstarter:in
21 Beiträge seit 2016
vor 7 Jahren

Sorry Coffeebean, ich wollte natürlich keine Diskussion lostreten Xml vs Jsdon.

Aber für meinen Einsatzzweck. Ich will ja nur die Daten sichern, bzw hinzufügen oder herauslöschen oder einfach nur anzeigen. Und glaube da wäre Json schon interessanter bzw. dafür ausgelegt.
Das XML mächtig ist das weisst man ja.

Werde aber beides für mich nochmals genauer drüber schauen und dann mich für meinen Zwecke entscheiden. Also sei vorbereitet falls ich mit Fragen zu Json komme oder doch XML 😄

Danke an allen.

Viele Grüße
Darty1971

PS: Bevor hier eine Diskussion losgetreten wird -> http://www.yegor256.com/2015/11/16/json-vs-xml.html

16.807 Beiträge seit 2008
vor 7 Jahren

Für Deinen Fall ist XML mit Sicherheit die bessere Variante.

T
708 Beiträge seit 2008
vor 7 Jahren

Dann gebe ich auch noch schnell meine 2 Cents dazu:

LaTino´s Aussage würde ich noch weiter differenzieren.
Die Frage ist, ob man Daten mit sich selbst oder anderen austauscht.
XML ist bekannt, hat eine definierte Struktur und ist leserlich. Deshalb eignet es sich für Konfigurations-Dateien oder zum Austausch mit z.B. anderen Dienstleistern.

JSON ist kompakter und in der Web und Java Welt recht verbreitet.

Sollte aber an dieser Stelle meiner Meinung nach noch keine Rolle spielen!
Sich das Format zuerst zu überlegen, ist von hinten durch´s Auge 😃

Würde mir erstmal eine saubere Klassenstruktur erstellen. Dann merkt man beim programmieren meist schon ob es passt, oder man noch Änderungen vornehmen muss.
Die Umstellung von dem XML-Serializer zu Newtonsoft JSON ist anschließend in 2 Zeilen erledigt.

Es gibt die Statistik. Darin mehrere Spieltage. Am Spieltag kann es mehrere Spiele mit X Teilnehmern geben. Ein Spiel (Match) besteht aus Sets & Legs...
Man beginnt i.d.R. am Ende der Struktur und füllt dann Schrittweise die Klassen mit weiteren Properties.

Mal ganz rudimentär und exemplarisch:

    public class Throw
    {
        public int Point { get; set; }
    }

    public class Leg
    {
        public List<Throw> Throws;
    }
    
    public class Set
    {
        public List<Leg> Legs;
    }

    public class Player
    {
        public string Name { get; set; }
    }

    public class Match
    {
        public DateTime Date { get; set; }
        public Player Player1 { get; set; }
        public Player Player2 { get; set; }
        public List<Set> Sets;
    }

Nun könnte man im Programm eine Liste von Matches erstellen und damit seine Spiele "verwalten". Oder jedes Match in eine eigene Datei schreiben. Denke das kommt dann von alleine, wenn man das Prinzip der Serialisierung verstanden hat.

D
Darty1971 Themenstarter:in
21 Beiträge seit 2016
vor 7 Jahren

Hi zusammen,

ich habe erst mal meine Vorstellung wie es aussehen sollte die XML Datei (wie auch im Eingangsthread angesprochen.


<Statistik>
	<Player>"Max Mustermann">
		<Game id="Round the World - Single">
			<DatumUhrzeit>"01.01.2016 13:00:00"
				<Data>1</Data>
				<Data>2</Data>
				<Data>3</Data>
				<Data>4</Data>
			</DatumUhrzeit>
			<DatumUhrzeit>"02.01.2016 13:00:00"
				<Data>1</Data>
				<Data>2</Data>
				<Data>3</Data>
				<Data>1</Data>
			</DatumUhrzeit>			
		</Game>
		<Game id="Round the World - Triple">
			<DatumUhrzeit>"01.01.2016 13:00:00"
				<Data>3</Data>
				<Data>2</Data>
				<Data>2</Data>
				<Data>2</Data>
			</DatumUhrzeit>
		</Game>
	</Player>
	<Player id="Phil Taylor">
		<Game id="Highscore">
			<DatumUhrzeit>"01.01.2016 13:00:00"
				<Data>100</Data>
				<Data>45</Data>
				<Data>61</Data>
				<Data>30</Data>
			</DatumUhrzeit>
		</Game>
	</Player>
</Statistik>

Wie man sieht hatte Max Mustermann 2x zu unterschiedliche Zeit Round the World Single" gespielt. Und 1x "Round the World Triple" Phil Taylor nur einmal Highscore.
So in der Art würde es gehen ? Weil dann kann ich bereits auf Spieler bzw. unterhalb auf die Spielmodus abgrenzen. Innerhalb sind dann die Daten.

Viele Grüße
Darty1971

16.807 Beiträge seit 2008
vor 7 Jahren
  1. IDs ist ein allgemein in der Software spezielles Schlüsselwort und sollten auch wirklich welche sein, und keine Textbezeichner - vor allem nicht mit Leerzeichen. Name wäre hier wohl angebrachter.
  2. Dein XML ist ungültig, da sich das Datum nicht in einem entsprechenden Element oder Attribut befindet. Das Element DatumUhrzeit wäre ohnehin als Attribut wohl besser.

Damit XMLs übersichtlich bleiben stell Dir folgende Fragen:

  • Speichere ich den Wert als Attribut oder wirklich als Element?
  • Brauche ich ein Element zum gruppieren anderer Elemente wirklich?
  • Verwende ich die Daten wirklich nach einem Standard?

Wie man Datums- und Uhrzeitwerte standardisiert in XML speichert (bzw. allgemein bei Daten, auch bei Datenbanken!) hab ich bereits oben genannt: ISO 8601.
Das macht es auch beim automatischen Verarbeiten / Serialisieren der Daten viel einfacher.

D
Darty1971 Themenstarter:in
21 Beiträge seit 2016
vor 7 Jahren

Hallo zusammen,

so nachdem ich einiges durchgelesen habe zum Thema XML, habe ich das Gefühl das immer verwirrter werde. Dabei geht es nicht mal um den Syntax.

Ich versuche mir jetzt ein wenig zu vorstellen wenn ich Tabellen hätte und ich dieses in XML umsetzen würde. Dabei habe ich dann auch mehrere verschiedene Tabellen. Ob meine Sichtweise zum Aufbau der xml Strukturi richtig ist ?


<Statistik>
	<Player Name="Max Mustermann">
		<Game Name="Round the World - Single">
			<row>
				<DatumUhrzeit>"01.01.2016 13:00:00"</DatumUhrzeit>
				<Data1>1</Data1>
				<Data2>2</Data2>
				<Data3>3</Data3>
				<Data4>4</Data4>
				<Data5>4</Data5>
				<Data6>4</Data6>
				<Data7>4</Data7>
				<Data8>4</Data8>
				<Data9>4</Data9>
				<Data10>4</Data10>
			</row>
			<row>
				<DatumUhrzeit>"02.01.2016 13:00:00"</DatumUhrzeit>
				<Data1>1</Data1>
				<Data2>2</Data2>
				<Data3>3</Data3>
				<Data4>4</Data4>
				<Data5>4</Data5>
				<Data6>4</Data6>
				<Data7>4</Data7>
				<Data8>4</Data8>
				<Data9>4</Data9>
				<Data10>4</Data10>
			</row>	
		</Game>
		<Game Name="Round the World - Triple">
			<row>
				<DatumUhrzeit>"02.01.2016 13:00:00"</DatumUhrzeit>
				<Data1>1</Data1>
				<Data2>2</Data2>
				<Data3>3</Data3>
				<Data4>4</Data4>
				<Data5>4</Data5>
				<Data6>4</Data6>
				<Data7>4</Data7>
				<Data8>4</Data8>
				<Data9>4</Data9>
				<Data10>4</Data10>
			</row>	
		</Game>
	</Player>
	<Player Name="Phil Taylor">
		<Game Name="Highscore">
			<row>
				<DatumUhrzeit>"01.01.2016 13:00:00"</DatumUhrzeit>
				<Data1>100</Data1>
				<Data2>45</Data2>
				<Data3>61</Data3>
				<Data4>30</Data4>
			</row>
		</Game>
	</Player>
</Statistik>

Meine aktuelle Vorstellung zu den hier stehende XML Datei.
Player-Name ist der Name der Datenbank.
Game-Name ist der Name der Tabelle
Innerhalb der Row sind dann die Spalten.
In Moment sind 2 Datenbanken (Spielernamen) mit ihren jeweiligen Tabellen.

Ich werde langsam das Gefühl nicht los das ich es zu kompliziert sehe ? Oder ist das jetzt eine "saubere" Art ?

Viele Grüße
Darty1971

16.807 Beiträge seit 2008
vor 7 Jahren

Ignorierst Du meinen Rat mit dem Datum mit Absicht? 🤔 Oder keine Lust drauf?
Was machen die Anführungszeichen beim Datum?
Das Datum bezieht sich auf die Row. Warum ist das Datum daher keine Attribut von Row?
Ebenso würde ich die Data-Werte nicht als Elemente sondern als Attribute umsetzen.


<Data Value="1"/>

Lass die Zahlen aus den Elementen weg.
Also Data und nicht DataX. Sowas macht man nicht.

3.003 Beiträge seit 2006
vor 7 Jahren

Das geht eigentlich mehr in Richtung Datenbankdesign. Man identifiziert die Entitäten (atomare Objekte) - mach dich mal zum Thema entity relationship Model schlau - und bildet die dann in Tabellen ab. Das kann dann auch per XML passieren. Beim groben Blick auf dein Beispiel würde das auf die Tabellen Spieler, Spiel, und Spieldaten hinauslaufen. Spieler hat Name, Spiel ein Datum und eine Referenz auf die ID eines Spielers, und Spieldaten je einen Ergebnis und eine Referenz auf eine ID eines Spiels, eventuell noch eine Zahl für die Reihenfolge im Spiel.


<statistics>
   <players>
      <player id="1" name="Max Mustermann"/>
   </players>
  <gametypes>
     <gametype id="1" name="Round the World - Single" />
     <gametype id="2" name="Highscore" />
  </gametypes>
  <games>
     <game id="1" playerId="1" Date="2016-04-20T20:15+02:00" typeId="1"/>
     <game id="2" playerId="1" Date="2016-04-21T08:15+02:00" typeId="2"/>
  </games>
  <gamedata>
     <data id="1" value="5" gameId="1" />
     <data id="2" value="11" gameId="1" />
     <data id="3" value="21" gameId="1" />
     <data id="4" value="60" gameId="1" />
     <data id="5" value="2" gameId="1" />
     <data id="6" value="30" gameId="2" />
     <data id="7" value="16" gameId="2" />
     <data id="8" value="1" gameId="2" />
     <data id="9" value="5" gameId="2" />
     <data id="10" value="20" gameId="2" />
     <data id="11" value="25" gameId="2" />
  </gamedata>
</statistics>

Sorry wegen Tippfehlern oder dem falschen Datumsformat, bin am Handy 😉
EDIT: DateTime in XML (was Abt mit ISO 8601 meint) - in meinem Beispiel 20.04.2016, 20:15 Uhr, UTC+2 (deutsche Sommerzeit). Dieses Format können die üblichen Serializer direkt in eine gültige DateTime verwandeln. (außerdem Beispiel mal auf zwei Spiele eines Spielers erweitert)

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

D
Darty1971 Themenstarter:in
21 Beiträge seit 2016
vor 7 Jahren

Hallo Abt,

ich wollte Dich auf keinen Fall ignorieren! Aber ich hab so viel gelesen zu den Thema, und kam zum Schluss für den Verständnis es in sozusagen Tabelle abzubilden/vorzustellen.

Ich kann hier wohl keine Tabelle erstellen im Forum ? Dann halt in Textform.


Datenbank: Max Mustermann
Tabelle: Round The World - Single
[Datum][Data 1][Data 2][Data 3] <- ist jetzt nur Bildlich gesehen der header
[2016-04-21T08:15+02:00][2][1][2]
[2016-04-20T08:18+02:00][3][2][1]

Tabelle: Round The World - Double
[Datum][Data 1][Data 2][Data 3] <- ist jetzt nur Bildlich gesehen der header
[2016-04-21T08:15+02:00][2][1][2]

Datenbank: Phil Taylor
Tabelle: Highscore
[Datum][Data 1][Data 2][Data 3] <- ist jetzt nur Bildlich gesehen der header
[2016-04-21T08:15+02:00][2][1][2]

Für mich ist/war noch schwer zu unterscheiden wann es ein Element oder ein Attrivut ist. Aber ein Atttribut ist auch ein Element ? Ausserdem dachte ich das zwischen den Tags dann immer ein Text Wert drin stehen kann. Also im Sinne von "Value"
Habe aber jetzt nur der Anfang nochmals überarbeitet. Das soll eine Tabelle sein mit 2 Zeilen.
datumUhrzeit bzw die Data Value sind dann die Spalten. Ist das so jetzt korrekt wie Du es gemeint hattest ?


<Statistik>
    <Player Name="Max Mustermann">
        <Game Name="Round the World - Single">
            <DatumUhrzeit Date = "2016-04-21T08:15+02:00">  <-- Zeile 1/Spalte 1
                <Data Value="1"</Data>  <-- Zeile 1/Spalte 2
                <Data Value="1"</Data>  <-- Zeile 1/Spalte 3
            </DatumUhrzeit >
            <DatumUhrzeit Date = "2016-04-21T08:15+02:00">  <-- Zeile 2/Spalte 1
                <Data Value="1"</Data>  <-- Zeile 2/Spalte 2
                <Data Value="1"</Data>  <-- Zeile 2/Spalte 3
            </DatumUhrzeit>
        </Game>
    </Player>
</Statistik>

@LaTino: Da habe ich auch eine Menge darüber gelesen. Das mit den Primar keys und so weiter. Natürlich könnte man es in mehrere Tabellen untergliedern (ob erforderlich?), aber ich wollte versuchen keine ID Nummer zu vergeben weil man da auch glaube ich Fehler produzieren kann. Ich wollte eher das man in erster Linie sieht .. Das sind die Daten von den einen Spieler (Player name). Diese Hat eine Tabelle "Round the World - Single" und darin sind Datenzeilen. Sind über den DatumUhrzeit ansprechbar die zeilen innerhalb der Tabelle. Das war mein erster Gedanke wie ich es realisieren wollte.

Viele Grüße
Darty1971

PS: Hoffe habe jetzt nichts ignoriert 😉

3.003 Beiträge seit 2006
vor 7 Jahren

Darty, deine Sichtweise des Problems ist da meines Erachtens ein bisschen durcheinander 😮).

Natürlich könnte man es in mehrere Tabellen untergliedern (ob erforderlich?), aber ich wollte versuchen keine ID Nummer zu vergeben weil man da auch glaube ich Fehler produzieren kann. Ich wollte eher das man in erster Linie sieht .. Das sind die Daten von den einen Spieler (Player name).

Du solltest zwischen dem Speichern der Daten und der Datenansicht unterscheiden. Die Datenspeicherung ist das, worüber wir gerade reden. Und da geht es darum:

  • doppelte Daten zu vermeiden - denn alles, was man doppelt speichert, muss man auch doppelt prüfen (denk mal drüber nach, was passiert, wenn du bei deinem XML noch einmal Max Mustermann spielen lässt: checken, ob's den schon gibt, richtigen Oberknoten suchen, einfügen, prüfen....)
  • Daten getrennt zu speichern: und zwar immer nach den Objekten getrennt: Spieler, Spieltypen, Spiele, Daten für die Spiele. Alle vier Dinge existieren komplett autark voneinander, wieso sollte man sie in eine Tabelle knallen?

Die Datenansicht wiederum ist für Menschen gedacht. Hier geht es darum, die Daten, die der Computer wohlsortiert gespeichert hat, so aufzubereiten, dass ein Mensch sie gut lesen kann. Aber das hat mit dem speichern, also hier mit der Struktur des XML, gar nichts zu tun.

Und Referenzen per ID - ja, da muss irgendwer drauf achten, dass die Referenzen auch gut organisiert sind. Wenn ein Spieler gelöscht wird, müssen zB alle seine Spiele auch mitgelöscht werden. Nennt sich referentielle Integrität. (relationale) Datenbanken machen das sowieso schon, und XML kann das auch. Oder, wenn einem XML-Schemaprüfungen zu komplex sind, kann man auch im Code beim Speichern danach prüfen. Der ganze Aufwand stellt aber sicher, dass die Daten vollständig und korrekt sind. Ich denke, dass man vor diesem Aufwand (der so groß nicht ist) zurückschreckt und stattdessen ein potenziell fehlerbehaftetes Modell benutzt, bei dem man letzten Endes genau denselben Aufwand hat - das ist nicht der richtige Weg.

Bei dem, was du da machst, fallen mir auf Anhieb einige Szenarios ein, mit denen ich als Entwickler beim besten Willen nichts zu tun haben wollen würde. Das wird dir derbe auf die Füße fallen.

Oh, und XML-Element oder -Attribut: Geschmackssache. Ein Attribut ist nach allgemeiner Auffassung etwas, das einen XML-Knoten in seiner Einzigartigkeit beschreibt, und ein Subelement etwas, das meistens eine Sammlung von gleichartigen Eigenschaften ist. Im Prinzip kannst du das halten wie ein Dachdecker.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

W
195 Beiträge seit 2008
vor 7 Jahren

@Darty1971

Wieso machst Du Dir denn das Leben so schwer? XML Serialisierung ist eine gängige, gut funktionierende Sache - kein Grund das Rad neu zu erfinden. Dein ganzes Gefrickel zeigt eher, dass Du schon Probleme beim Entwurf der Struktur der Daten hast (also dem übertragen der benötigten Informationen in ein entsprechendes Model). Schau Dir den Post von trib nochmal genau an und berücksichtige seine Hinweise (Entwurf einer vernünftige Daten-/Klassenstruktur usw.).

Damit hättest Du Dein Problem längst gelöst...