Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi XML; manipulieren ist ja kein Problem, aber ... (https://www.delphipraxis.net/7489-xml%3B-manipulieren-ist-ja-kein-problem-aber.html)

Ricane 13. Aug 2003 16:03


XML; manipulieren ist ja kein Problem, aber ...
 
Moin,

also das manipulieren, bzw. das arbeiten mit .xml Dateien ist ja Dank XMLDocument gar nicht so schwer. Aber wie kann man denn eine .xml Datei zur Laufzeit erstellen?!

Mit dem Befehl ...

Code:
Datamodule1.XMLDocument1.Create('C:\Datei.xml');
... macht er es auf jeden Fall nicht. Wenn man erstmal eine .xml Datei hat, die auch schon ihren Anfang, á la <?xml version ......> besitzt, ist das hinzufügen von z.B. Knoten ja nicht mehr das Ding ...

Weiß jemand Rat?

Ricane

MathiasSimmack 13. Aug 2003 16:33

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Beim MS-XML-Parser geht´s recht einfach mit loadXML, der du den gewünschten (Anfangs-)XML-Code als String übergibst. Ich könnte mir vorstellen, dass XMLDocument etwas ähnliches anbietet. Sagt denn die Hilfe nichts darüber?

Create dient wohl eher dazu, eine Instanz des XML-Document-Objektes zu erzeugen.

Ricane 14. Aug 2003 08:07

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Zitat:

Zitat von MathiasSimmack
Create dient wohl eher dazu, eine Instanz des XML-Document-Objektes zu erzeugen.

Es gibt bei XMLDocument 2x die Metohe CREATE. Einmal wird AOwner übergeben, und einmal AFileName...

Beim XMLDocument, gibt es zwei Load* Methoden, die aber beide auf einen Fehler laufen, wenn man nicht vorhandene Dateien angibt...


Grüsse,

Ricane

CalganX 14. Aug 2003 09:08

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Hi,
du musst die Create-Methode verwenden mit dem AFileName. Ich vermute, dass dadurch die Datei auch erstellt wird.

Wenn alle Fäden reißen kannst du auch eine einfache TextFile-Variable nehmen und dann dir das Grundgerüst per writeln erstellen. Allerdings sollte man das nur machen, wenn das mit deinem XMLDocument nicht geht.

Btw MS XML halte ich für etwas einfacher bzw. logischer... :roll: ;)

Chris

Ricane 14. Aug 2003 10:35

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Als DOMVendor benutze ich ja MSXML.

Aber es kann doch nicht so schwierig sein, eine XML Datei mit dem XMLDocument zu erstellen.

Im I-Net bzw. im Delphi Handbuch (oder Delphi Hilfe) gibt es auch keine klaren Hinweise...

Die Delphi Hilfe ist an der Stelle aber auch sehr(!) schwach. Es gibt für nix ein Beispiel!


Ricane

MathiasSimmack 14. Aug 2003 11:38

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Warum sagst du das nicht gleich? IMHO bietet die XML-Komponente von Delphi6+ mehrere Möglichkeiten, von denen der Microsoft-Parser nur eine ist.

In dem Fall solltest du mal einen Blick in das PSDK werfen. Oder wenn dir das zu fett ist (~300meg Download), dann hole dir die aktuelle Version 4 SP2 von MS-XML. Ihr liegt die Doku auch bei. Da wirst du mit Sicherheit fündig, da du letztlich in Delphi "nur" die Typbibliothek von Microsoft benutzt.

Und in dem Fall gilt, wie ich schon schrieb:
Delphi-Quellcode:
xmldoc := CoDOMDocument40.Create;
{ ... }

xmldoc.loadXML('<Root><SubNode1><SubNode2/></SubNode1></Root>');

{ ... }
zum Anlegen einer neuen XML-Datei, die du dann mit
Delphi-Quellcode:
xmldoc.save('Pfad\Dateiname.xml');
speichern kannst. Das bezieht sich nun zwar vorrangig auf die schon angespochene Typbibliothek von Microsoft (s. auch Chakotays Tutorial), sollte aber mit der XML-Komponente ähnlich laufen.

btw: lkz schrieb in AUQ, dass es bei XMLDocument von add heißt, und nicht loadXML. Dazu kann ich nichts sagen; höchstens: ausprobieren! Aber ich denke, eine Doku müsste doch eigenlich dabei sein (bei Delphi). Ist doch immerhin eine Standardkomponente ab Version 6. Oder?

Ricane 14. Aug 2003 12:04

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Zitat:

Zitat von MathiasSimmack
Delphi-Quellcode:
xmldoc := CoDOMDocument40.Create;
{ ... }
xmldoc.loadXML('<Root><SubNode1><SubNode2/></SubNode1></Root>');

{ ... }
zum Anlegen einer neuen XML-Datei, die du dann mit
Delphi-Quellcode:
xmldoc.save('Pfad\Dateiname.xml');

Wenn ich den Code zum anlegen probiere, also CoDOMDocument40.Create, dann sagt er mir nur das das ein unbekannter Bezeichner ist...
Als ich die Typenbibliothek msxml4.dll installieren wollte, sagte er mir, das sie bereit installiert ist, aber diese Datei die man, lt. dem Tutorial, einbinden soll, ist nicht vorhanden...

Ich habe einfach nur die Komponente XMLDocument in mein DataModule eingebunden und verwende folgende Sachen in der USES Liste:

Code:
XMLDOM, XMLIntf, XMLDoc;
... na ja und natürlich noch diese ganzen anderen Standard Uses Dinger wie Windows, Messages n´ Stuff...

Aber ich kriege es nicht hin...


Ricane

MathiasSimmack 14. Aug 2003 12:38

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Chakotay hat´s beschrieben:
  1. MS XML installieren
  2. Delphi starten
  3. Menü "Projekt -> Typbibliothek importieren"
  4. Auswahl von "Microsoft XML 4.0" (oder was immer da steht)
  5. "Create Unit"
Dann findest du eine MSXML_TLB2.pas ... hm ... irgendwo ... Die bindest du ein, das reicht für den MS-XML-Parser. Weitere Beispiele dazu gibt´s hier in der DP genug. Und im genannten Tut steht ja auch was dazu.

CalganX 14. Aug 2003 13:14

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Standardmäßig befindet sich die Unit dann im Lib-Verzeichnis.

Chris

Ricane 14. Aug 2003 14:10

Re: XML; manipulieren ist ja kein Problem, aber ...
 
Ich habe das ganze jetzt mit dem XMLDocument, ohne Abstriche machen zu müssen, gelöst.

Zwar "betrüge" ich die .XML Datei etwas, weil ich den "Grundstein" per TextFile Bearbeitung lege und erst dann das XMLDocument einschalte, aber das stört mich wenig... :D


Ricane


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr.
Seite 1 von 2  1 2      

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