Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Vorteile/Nachteile von XML

  Alt 18. Jan 2011, 23:03
Mich hat XML zumindest zum speichern von komplexen Objekten nicht überzeugt. Ich fand zwar den Ansatz und die Möglichkeit, den XML-Experten zu nutzen, sehr interessant aber dann im Handling doch zu kompliziert und unflexibel.

Daher habe ich für meine Objekte eine eigene Dateistruktur festgelegt (ähnlich JSON). In dieser können sich die Objekte auch gegenseitig referenzieren.
Beim Laden einer Datei werden die Objekte dann wieder hergestellt. Dazu dienen ID´s, die in den Objekten und der Datei gespeichert sind.

Im Gegensatz zu XML können Knoten problemlos leer sein bzw. komplett fehlen. Die tatsächliche Struktur ist über die Objekte im Hauptspeicher definiert. Diese lesen dann (wenn vorhanden) ihre Daten aus der Datei.
Im Grunde wird die Datei etwa wie eine "mehrdimensionale Ini" genutzt. Dabei ist die Reihenfolge der Einträge nicht relevant, sondern lediglich die Struktur und "Feldnamen".

Binäre Daten (im Beispiel Picture) werden im Base64-Format abgelegt.

Nachteile des Konzepts sind, dass
- die Datei recht groß wird (allerdings dann auf Wunsch komprimiert wird)
- die Daten zur Laufzeit im Hauptspeicher gehalten werden
(wobei letzteres wie in meinem Fall natürlich auch explizit gewollt sein kann )

...oh, ich schwiff ab...


Für den Datenaustausch mit feststehenden Strukturen halte ich XML jedoch durchaus für nützlich und praktikabel.

Code:
!ProgramName=Olympic
!ProgramVersion=(V. 0.2.1-)
<TournamentEvent=20100906211710810-20100906211711470-0000000006
  Name=Test
  <State=20100914105207021-20100914105207611-0000000008
  >
  <Sport=20100827212547328-20100827212547942-0000000002
    Name=Badminton
    SportPlaceName=Feld
    <NumeratorList=20100827212547328-20100827212547942-0000000003
      <Numerator=20100827212547328-20100827212702853-0000000005
        Activate=True
        Definition=0..19:21;20..28:+2;29:30
        Name=Rallypoint
        PlanDuration=30
        PointName=Bälle
        WinSetCount=2
      >
      <Numerator=20100827212547328-20100827212808350-0000000006
        Activate=True
        Definition=0..14:15;14..16:17
        Name=alte Zählweise bis 15
        PlanDuration=40
        PointName=Bälle
        WinSetCount=2
      >
      <Numerator=20100827212547328-20100827212845934-0000000007
        Activate=True
        Definition=0..10:11;10..12:13
        Name=alte Zählweise bis 11
        PlanDuration=25
        PointName=Bälle
        WinSetCount=2
      >
    >

...

            <Member=20101025203449672-20101025203508688-0000000203
              Activate=True
              <Person=20101025203449672-20101025203508688-0000000204
                Birthday=01.01.1901
                eMail=xxx@gmx.de
                FirstName=René
                Kind=m
                LastName=Preißler
                Picture=eJzt3edTFFu/L/B7/pP74t6qc8/z7GfvrUhO5iw5JxVzjtucA2IElSw55yQ554xIFA........
                <State=20101129225442228-20101129225526456-0000004171
                >
              >
            >
...


  >
>
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (19. Jan 2011 um 16:22 Uhr)
  Mit Zitat antworten Zitat