AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi XML-Tutorial
Tutorial durchsuchen
Ansicht
Themen-Optionen

XML-Tutorial

Ein Tutorial von CalganX · begonnen am 10. Aug 2003 · letzter Beitrag vom 31. Mär 2013
Antwort Antwort
Seite 2 von 11     12 34     Letzte »    
CalganX
Registriert seit: 21. Jul 2002
Ich habe mich mal drangesessen ein Tutorial zu schreiben.
Es ist mir schon oft in der DP aufgefallen, dass viele XML lernen wollen und deswegen habe ich mein bescheidenes Wissen über XML in ein Tutorial verfasst.
Mit der Hilfe von Mathias und Christian und allen anderen, die mir geholfen haben das Tutorial zu verbessern, ist das Tutorial nun - hoffentlich - fehlerfrei.

Im Laufe der Zeit werde ich immer mal wieder Sachen einbauen und Sie Anhängen.

Das im Tutorial programmierte Programm habe ich leider bisher noch nicht hochladen können, werde das aber schnellstmöglich nachholen.

Viel Spaß und Erfolg mit dem Tutorial!

Chris

Download-Update (März, 2007): Download auch wieder über meine Website. http://blog.calganx.net/artikel/xml-tutorial/
Ist aber immer noch die Version 2.1 (derzeit aktuellste Version aus dem Jahr 2003). Ich denke immer noch über eine Version 3.0 nach. Wer mich unterstützen will, darf mir gerne finanzielle Unterstützung zu kommen lassen.
Angehängte Dateien
Dateityp: pdf xml-tutorial___version_2.1_134.pdf (128,8 KB, 3997x aufgerufen)
 
Benutzerbild von p0ke
p0ke

 
Turbo Delphi für Win32
 
#11
  Alt 28. Dez 2003, 13:18
Zitat von MathiasSimmack:
Allerdings (Achtung, persönliche Meinung!) fand ich diese Sache mit der "id" überflüssig
Also ich lass die ID erstmal drin. Bins sonst von den Datenbanken gewohnt, das man immer irgendwo n eindeutigen Schlüssel hat. Um von meiner Seite aus zu sagen ob ich die ID nun im XML wirklich brauche oder nicht, dazu hab ich noch zu wenig Hintergrundwissen was das anbelangt.


Aber danke für den Source, inzwischen hatte sich das allerdings auch erledigt.


mfg

p0ke
René
  Mit Zitat antworten Zitat
MathiasSimmack
 
#12
  Alt 28. Dez 2003, 18:46
Zitat von p0ke:
Also ich lass die ID erstmal drin. Bins sonst von den Datenbanken gewohnt, das man immer irgendwo n eindeutigen Schlüssel hat. Um von meiner Seite aus zu sagen ob ich die ID nun im XML wirklich brauche oder nicht, dazu hab ich noch zu wenig Hintergrundwissen was das anbelangt.
Bei einer echten Datenbank mag so eine eindeutige ID ja auch durchaus Sinn machen. Selbst bei unterschiedlichen Sortierungen kann man immer noch recht fix die jeweils höchste ID ermitteln und als Basis für den nächsten Eintrag nehmen. Oder man verwendet eine ID, die automatisch und ohne Zutun des Anwenders erhöht wird.

Hier, in diesem speziellen Fall wird die jeweils nächste ID immer aus dem Wert des letzten Items in der List-View gebildet:
MainForm.MovieList.items[MainForm.MovieList.Items.Count - 1].Caption Das ist dann problematisch, wenn du eine Sortierung einbaust. Sagen wir: der Film "Stargate" hat die ID 1, weil du ihn zuerst eingetragen hast. Und "Casablanca" hat meinetwegen die ID 2, weil du ihn später eingetragen hast. Lässt du jetzt alfabetisch sortieren, dann wird "Casablanca" logischerweise vor "Stargate" angezeigt.
Evtl. ist "Stargate" auch der letzte Film in der Liste, womit nun die ID 1 am Ende steht. Wenn du jetzt einen neuen Film hinzufügst (ohne vorher wieder nach IDs zu sortieren), dann wird durch die o.g. Codezeile die 2 als "neue" ID berechnet.

Um also die tatsächlich echte nächste ID zu ermitteln, müsstest du die List-View intern umsortieren bzw. alle Items durchgehen und die höchste Zahl suchen. Und weil das umständlich ist, habe ich darauf verzichtet. Und mal ehrlich: spielt es eine Rolle, mit welcher ID die Filme archiviert werden? Wichtiger ist IMHO die Anzeige der Filmnamen und die mögliche Sortierung nach Genre, Typ (DVD, usw.), Bewertung und dergleichen.
  Mit Zitat antworten Zitat
Benutzerbild von p0ke
p0ke

 
Turbo Delphi für Win32
 
#13
  Alt 29. Dez 2003, 15:17
Hi Mathias,

danke für die Erläuterungen.

Ich habe allerdings in deinem Source gesehen, das du schlicht den Namen als "eindeutigen Schlüssel" um es mal so zu nennen verwendest. OK, macht Sinn, weil du davon ausgehen kannst , dass niemals ein und derselbe Film in der Liste steht. Sollte es doch der Fall sein, weil du Stargate einmal auf DVD und einmal als MPEG hast, dann siehts aber wieder schlecht aus, hab ich Recht?

Ich habe jetzt folgendes gemacht, da ich bei meinem geplanten Projekt auch das Datum brauche wann der Datensatz angelegt wurde, nehme ich ein UnixTimeStamp als Schlüssel. Das sollte sich normal nich wiederholen, oder was hälst du davon?

Keine Ahnung ob ich überhaupt jetzt alles richtig verstanden habe. Wenn nich, klär mich bitte nochmal auf.


Bis dann

p0ke
René
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
 
#14
  Alt 20. Jan 2004, 11:06
Kleine Anmerkung, auch wenn ich jetzt wieder als Klugscheisser verschrien werde..

Zitat von Tutorial Seite 5:
Denn HTML basiert auf XML.
Das ist so nicht korrekt.

HTML basiert auf SGML. Das W3C hat sich dann etwas später zusammengesetzt und war der Meinung, HTML hat einige gravierende Nachteile für den Informationsaustausch - SGML ist dafür aber viel zu komplex.

Somit wurde aus den Vorteilen von SGML und HTML hinterher XML entwickelt. Ein best of both worlds sozusagen.

Korrekt wäre also:
Zitat:
Denn XML basiert auf HTML und dessen vorgänger SGML.
Vielleicht für eine neue Version...
Sebastian Gingter
  Mit Zitat antworten Zitat
CalganX

 
Turbo Delphi für Win32
 
#15
  Alt 20. Jan 2004, 14:28
Hi,
okay! Werde ich korrigieren.

Danke,
Chris
  Mit Zitat antworten Zitat
DirkH
 
#16
  Alt 5. Feb 2004, 10:49
Arbeite mich ja auch grade durch das Tutorial, komme auch an dieser Stelle nicht weiter.

newSub.text:=IntToStr(MainForm.MovieList.items[MainForm.MovieList.Items.Count - 1].Caption) +1;
Mir ist die sortierung, die ich dann vornehmen kann, oder auch nicht ziemlich egal. Dient ja erstmal nur zur einleitung.

Kann mir bei dem Problem einer helfen ?
  Mit Zitat antworten Zitat
Alexander

 
Turbo Delphi für .NET
 
#17
  Alt 5. Feb 2004, 16:16
jetzt müsstest du nur noch das Problem erläutern
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#18
  Alt 18. Apr 2004, 22:20
Jetzt habe ich auch mal eine Frage.

Im Tutorial steht in etwa folgender Code:
Delphi-Quellcode:
if not FileExists(FFilename) then
  begin
    // create new XML file
    FXMLDoc.loadXML('<?xml version="1.0"?><adressdb></adressdb>');
  end
  else
  begin
    // open and parse existing file
    FXMLDoc.load(FFilename);
  end;
Es geht mir um den if-Abschnitt. Im Tutorial steht dazu sinngemäß: "danach prüfen wir, ob eine XML-Datei existiert und wenn nein, dann soll eine XML-Datei erstellt werden..."
Sprich dieseZzeile:
FXMLDoc.loadXML('<?xml version="1.0"?><adressdb></adressdb>'); erstellt eine neue Datei. Nur woher weiß das Programm, wie sie heißen soll und wo sie gespeichert werden soll? Nun ja. Im Tutorial kommt da nach nur noch ein grausames Application.Terminate. Im Tutorial kommt nicht mehr und bei mir auch nicht. Und ich gehe jede Wette ein mit dem Tutorial Code wird auch keine datei erstellt, wie es bei mir der Fall ist.

Wie also erstelle ich eine neue XML-Datei richtig?
Michael
  Mit Zitat antworten Zitat
MathiasSimmack
 
#19
  Alt 18. Apr 2004, 22:47
Im Prinzip passt das schon mit dem Code. Gespeichert wird sie dann im Beispielprogramm an anderer Stelle durch
xmldoc.save('test.xml'); (der Dateiname ist natürlich ein anderer). Die von dir gezeigte Zeile mit der Anweisung "loadXML" dient nur dazu, den XML-Code im Speicher zu erzeugen wenn die gesuchte Datei nicht existiert. Hintergedanke: Was nicht da ist, kann nicht geladen werden. Also muss die Datei neu angelegt werden. Und mit der genannten Anweisung kannst du den XML-Code quasi als String übergeben, und dann lassen sich die einzelnen Objekte ansprechen.

btw: Durch deine Fragerei mit der Suche nach mehreren gleichen Namen hast du mich auf eine Idee gebracht, die ein Update von Chakotays Movie Organizer zur Folge hatte.

Edit-PS:
Zitat von Luckie:
Und ich gehe jede Wette ein mit dem Tutorial Code wird auch keine datei erstellt, wie es bei mir der Fall ist.
Die Wette verlierst du. Das einzige Problem ist, dass Tutorial und tatsächlicher Code des Beispielprogramms Movie Organizer nicht mehr so richtig zusammen passen.
  Mit Zitat antworten Zitat
Tillmet

 
Delphi 7 Enterprise
 
#20
  Alt 15. Mai 2004, 10:52
Sorry, falls ich was überlesen habe, was mein Problem behebt, aber soweit ich das sehe, gehen die ganzen Links mit den neuen Versionen des Tuts nicht mehr, nur die Einführung, ist das so richtig?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 11     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz