Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML Hilfe benötigt (https://www.delphipraxis.net/88301-xml-hilfe-benoetigt.html)

Bernd Nowak 13. Mär 2007 13:06


XML Hilfe benötigt
 
Hallo an alle,
benutze Turbo Delphi 2006 Pro und möchte folgende XML Datei einlesen, ändern bzw ergänzen. Diese Datei ist von mir erstellt. Falls jemand Ideen hat für den Aufbau der XML Datei nur zu :)

Delphi-Quellcode:
<?xml version="1.0"?>
<options>
   <1967>
      <tracks>
         <update>
            <silverstone>
               <installed>
               yes
               </installed>
            </silverstone>
         
         </update>
      </tracks>
   </1967>
   <1965>
      <sound>
         <update>
            <author>
               <installed>
               yes
               </installed>
            </author>
         
         </update>
      </sound>
   </1965>
</options>
Möchte/sollte XML mit Delphi 32 Bordmittelns sein also ohne MSXML da ich von den Client Systemen nur weiss das es von Win95-Vista alles sein kann ;)

angos 13. Mär 2007 13:18

Re: XML Hilfe benötigt
 
hi,

verstehe nicht ganz was du möchtest. Wenn du die Datei einfach einlesen und bearbeiten möchtest, empfehle ich dir, einfach den String durchzuparsen und die jeweiligen einzelnen attribute (am sinnvollsten) in ein Objekt zu schreiben, womit du dann die änderungen abbilden kannst.
Zur XML-Datei an sich:
"Kleine" Informationen kann man als Attribute speichern, das spart platz und ist überischtlicher!

Delphi-Quellcode:
  <1967>
      <tracks>
         <update>
            <silverstone installed=yes>

            </silverstone>        
         </update>
      </tracks>
   </1967>

Bernd Nowak 13. Mär 2007 15:12

Re: XML Hilfe benötigt
 
Danke schonmal mit den Attributen :)
Mit dem durchparsen. Mir ist klar das ich das einfach Zeilenweise machen kann aber wäre das mit einem XML Objekt nicht besser ? Habe mir schonmal OmniXML angesehen aber mir fehlt da der Überblick um die Datei einfach zu öffnen. Habe mit Perl schon mal eine etwas umfangreichere Datei per XML geparst und kam eigentlich gut damit zurecht.
Da ich hier aber nicht nur die Datei Parsen will sondern die XML Datei benutzen will um installierte Sachen anzuzeigen und die Technik benutzen will um mittels neuer Dateien so etwas wie ein Repository aufzubauen dachte ich mir das diese Datei per OmniXML oder etwas anderem gelesen bzw geschrieben wird.

Robert Marquardt 13. Mär 2007 15:20

Re: XML Hilfe benötigt
 
Da hat jemand XML nicht verstanden. Ein Element wie <1967> ist kein XML. 1967 ist ein Wert und kein Schluesselwort (um es mal in Delphiterminologie auszudruecken). Acuh die Verschachtelung der elemente scheint mir dubios.

Bernd Nowak 13. Mär 2007 15:42

Re: XML Hilfe benötigt
 
Bestimmt habe ich XML noch nicht ganz verstanden ansonsten würde ich diese Bitte hier nicht äußern. Also 1967 steht für das Jahr der F1 Saison.
Folgendes Problem soll gelöst werden:

Für die Simulation GPL (F1 1967) gibt es die aktuellen Modifikationen F1 1965 und F1 1969 sowie Thundercars. Hinzukommen werden F1 1966 sowie Sportscars 1967.

Die Optionen / Modifikationen um die es geht betreffen graphische bzw. Wave Dateien.
Es gibt einmal Aktualisierungen für die Kurse (track = Silverstone/Kyalami/Spa/Nürburgring) die teilweise aufeinanderaufbauen. Dann gibt es Sound Dateien von verschiedenen Autoren zur Saison (also 1967/1965/1969/...).

In dieser XML Datei möchte ich jetzt abspeichern welche Modifikation gerade installiert ist anstatt jedesmal die Verzeichnisse durchzugehen um anhand irgendwelcher Dateien festzustellen welche Modifikation installiert wurde.

Ich habe es mal mit einer INI Datei zum Spass angefangen, finde dies aber zu kompliziert (min. 11 Strecken max. 400 Strecken/7 Autosounds/min. 4 Saisons/x Autoren).

Also ich bin froh wenn jemand hier mir hilft das in XML oder anderen Struktur abzubilden :)
Vielleicht hilft diese Information weiter um mir helfen zu können ? Die XML Struktur oben ist einfach so ein simples Grundgerüst das bestimmt nicht alle Fälle abdeckt oder Sachen falsch macht. Hilfe ;)

DGL-luke 13. Mär 2007 15:54

Re: XML Hilfe benötigt
 
Hallo,

so sollts hinhauen:

XML-Code:
<racingsim>
  <modifications>
    <mod name="F1 1965">
      <carsounds>
        <csnd name="..." file="..." />
      </carsounds>
      <tracks>
        <track name="N&uuml;rburgring" file="..." />
      </tracks>
    </mod>
  </modifications>
</racingsim>
du brauchst natürlcih jetzt auch noch "authorsounds" und "seasons".

einzelne tags ohne inhalt bekommen ein / vor der schließenden spitzen klammer, und du kannst natürlich tags aneinanderreihen. sprich hinter das letzte </mod> einfach ein neues <mod>.

Bernd Nowak 13. Mär 2007 16:06

Re: XML Hilfe benötigt
 
Also würdet ihr die Werte in die <zweig name wert="xx" /> mit übergeben wenn ich das richtig verstehen und nicht die Syntax benutzen die ich auch schon gesehen habe: Im Zweig Name <wert>xx</wert>. Oder gibt es Gründe warum oder wann man die eine Syntax der anderen vorzieht ?

Zum Testen ist das aber erstmal nicht ganz so wichtig da ich das letzte Schema von Lukas ja erstmal benutzen könnte könnte und dann erst mal versuchen könnte diese mittels (????)XML parser zu lesen :) wo ich dann wieder auf dem Schlauch stehe. Wenn man nicht die MS Schnittstelle benutzt welche wird dann von euch eingesetzt ?

Ich hoffe es ist in Ordnung hier scheinbar 2 Themen in einem Thread zu haben ;) (XML Schema plus Parser).

DGL-luke 13. Mär 2007 16:30

Re: XML Hilfe benötigt
 
Hallo,

ich mags lieber mit Attributes. Ist ne reine persönliche Präferenz.

Muetze1 13. Mär 2007 20:50

Re: XML Hilfe benötigt
 
Als Parser ohne Abhängigkeit von ActiveX/COM Objekten kann ich sonst mal meine XMLLib hier ansprechen...

Bernd Nowak 14. Mär 2007 08:04

Re: XML Hilfe benötigt
 
Zitat:

Zitat von Muetze1
Als Parser ohne Abhängigkeit von ActiveX/COM Objekten kann ich sonst mal meine XMLLib hier ansprechen...

Werde ich quasi sofort machen :) weil das ja genau das wäre was ich suche. Kann ich in diesem Thread fragen wenn ich Probleme damit habe oder aber per PM ?

Danke

Muetze1 14. Mär 2007 08:31

Re: XML Hilfe benötigt
 
Ich denke, wenn andere später diesen Thread finden und auch meine Lib nutzen wollen, könnten sie die selben Probleme/Fragen haben. Somit sollte das wohl hier hinein passen. Ansonsen stehe ich auch per PM oder e-mail zur Verfügung.

Bernd Nowak 14. Mär 2007 08:38

Re: XML Hilfe benötigt
 
Habe mal 2 Dateien erstellt (mit beiden Rumpfsektionen von hier, also in jeder eine) und diese mit dem mitgeliefertem pj_XMLlibTest geprüft. Bei beiden erscheint sofort nach öffnen die Meldung: Root Node can not have attributes.
Irgendeine Hilfe ? Format falsch ?

Muetze1 14. Mär 2007 09:28

Re: XML Hilfe benötigt
 
Der XML Standard erlaubt keine Attribute auf dem Hauptknoten. Die beiden hier geposteten XML Strukturen hingegen haben aber keine solche, von daher liegt das Problem woanders. Könntest du die beiden XML Dateien hier im Thread anhängen, damit ich mir das mal anschauen kann?

/EDIT: Falls es kein Fehler ist sondern gewollt: meine Lib erlaubt es mit einem Compilerschalter auch Attribute auf den Hauptknoten anzulegen. Dies ist z.B. für RSS Feeds nötig. Aber grundlegend erstmal schauen...

Bernd Nowak 14. Mär 2007 09:51

Re: XML Hilfe benötigt
 
Liste der Anhänge anzeigen (Anzahl: 2)
Thomas, ich habe die 2 Dateien mal angehängt.Hoffe das ich nur zu blöd bin :) Wie gesagt ist ja nur damit ich überhaupt mal einen Einstieg finde ;)

Muetze1 14. Mär 2007 11:55

Re: XML Hilfe benötigt
 
Liste der Anhänge anzeigen (Anzahl: 1)
So leid es mir tut, aber das kann ich nicht nachvollziehen mit den beiden gegebenen Dateien. Im Anhang ein Testprojekt welches beide Dateien ordentlich lädt und die Struktur ansatzweise formatiert ausgibt.

Macht das angehängte Projekt auch den o.g. Fehler?

Bernd Nowak 14. Mär 2007 12:52

Re: XML Hilfe benötigt
 
Hallo hab das Projekt mal kompiliert aber da war ein Fehler drin ;) Statt ShowNode(0, lLib.Root) hattest du ShowNodes(0, lLib.Root); :)

Kannst du denn mal prüfen was in der pj_XMLibTest.dpr aus den aktuelle Quellen (v1.48 / 07. März 2007) falsch ist ? Habe eigentlich erstmal das gleiche gemacht wie mit der kleinen Konsolen Anwendung. Mit Turbo Delphi Pro geöffnet und kompiliert. Noch gar nichts an dem Programm geändert ;)

Der Fehler wird in der Unit XMLLib ausgelöst:
Delphi-Quellcode:
Function TXMLNode.GetAttributes: TXMLAttributeList;
Begin
{$IFNDEF ALLOWATTRIBUTEONROOT}
  If ( Not Assigned(fParent) ) And ( fLevel = 0 ) Then
    Raise EXMLInvalidOperation.Create('Root node can not have attributes')
  Else
{$ENDIF}
    Result := fAttributes;
End;

Muetze1 14. Mär 2007 13:04

Re: XML Hilfe benötigt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Bernd Nowak
Hallo hab das Projekt mal kompiliert aber da war ein Fehler drin ;) Statt ShowNode(0, lLib.Root) hattest du ShowNodes(0, lLib.Root); :)

Zu früh gepackt - war dann wohl im Editor noch nicht gespeichert gewesen. Das war auch der einzige Fehler, den ich noch zuletzt korrigiert hatte...

Zitat:

Zitat von Bernd Nowak
Kannst du denn mal prüfen was in der pj_XMLibTest.dpr aus den aktuelle Quellen (v1.48 / 07. März 2007) falsch ist ? Habe eigentlich erstmal das gleiche gemacht wie mit der kleinen Konsolen Anwendung. Mit Turbo Delphi Pro geöffnet und kompiliert. Noch gar nichts an dem Programm geändert ;)

Omg, klar. Naja, peinliches Ding. Ich hatte diese XML Konformität später in der Lib hinzugefügt und hatte nicht wirklich das Beispielprojekt dazu getestet. Nun ja, das ist ein reines Problem des ansprechens. Peinlich. Die Lib ist in Ordnung, nur das Testprojekt ist falsch - ich habe die aktualisierte Version angehangen.

Ich werde also die Tage mal wieder eine neue Version herausgeben... :oops: Peinlich...

Bernd Nowak 14. Mär 2007 13:17

Re: XML Hilfe benötigt
 
Jup, klappt jetzt. Werde mich dann mal mit dem Rest beschäftigen :-D

Muetze1 19. Mär 2007 00:08

Re: XML Hilfe benötigt
 
Kleiner Hinweis: Die wurde aktualisiert und sollte nun (etwas) schneller sein, aber bei deutlich weniger Speicherverbrauch. Auch sind noch 2 Fehler behoben worden sowie die o.g. Beispiel Applikation wurde aktualisiert und ein neues Konsolenprogramm als Beispiel eingefügt. XMLLib für Details.

Wie sieht es denn zZ aus mit dem Projekt?

Bernd Nowak 21. Mär 2007 10:07

Re: XML Hilfe benötigt
 
Thomas,
vielen, vielen Dank ! Bin aber zur Zeit mit einem Inno Setup sehr beschäftigt und habe auch nicht soviel Zeit während meiner Arbeitszeit mich darum zu kümmern ;)
So ist's nun manchmal im Leben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 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