Autor Beitrag
alex_id
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Fr 16.01.04 01:45 
hallo ...

also ich hab folgendes Problem :
ich möchte einen "record" in eine xml datei speichern ... diese xml datei so vor dem speichern neu erstellt bzw der Inhalt gelöscht werden ...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure saveToXml;
Var
        data : IXMLDOMNodeList;
        mainNode, subNode: IXMLDOMNode;
        i,j, length : Integer;
Begin
    Form1.xmlDoc := newXMLDocument;
    Form1.xmlDoc := CoDomDocument40.Create;

    For i:=1 to anz do
    Begin
        mainNode := Form1.xmlDoc.createElement('data');

        subNode := Form1.xmlDoc.createElement('id');
        subNode.text := IntToStr(i);
        mainNode.appendChild(subNode);

        subNode := Form1.xmlDoc.createElement('name');
        subNode.text := objLiteral[i].name;
        mainNode.appendChild(subNode);
     end;
     Form1.xmlDoc.save('test.xml');
end;


so wie ich es hier mache funktioniert es nicht ... bekomme immer eine leere Datei ....

Was mach ich falsch ???

_________________
Es gibt viele Wege, doch man kann nur einen gehen!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 16.01.04 09:16 
Kurz gesagt: du erzeugst zwar einen Knoten ("mainNode"), hängst diesen aber nicht ins XML-Dokument ("xmldoc") ein. Schau mal, bei "subNode" machst du doch folgendes:
Zitat:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
subNode := Form1.xmlDoc.createElement('id');
subNode.text := IntToStr(i);

// *trommelwirbel*

mainNode.appendChild(subNode);

Normalerweise müsstest du das gleiche auch mit "mainNode" machen, bspw:
ausblenden Delphi-Quelltext
1:
xmldoc.appendChild(mainNode);					

Aber - wenn du es versuchst, wirst du bei deinem bisherigen Ansatz wahrscheinlich von einer neuen Fehlermeldung überrascht werden. Deine XML-Datei würde (wenn es möglich wäre!) nämlich so aussehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<data>
  <id>1</id>
  <name>Weiß nicht</name>
</data>
<data>
  <id>2</id>
  <name>Weiß ich immer noch nicht</name>
</data>

Was stimmt hier wohl nicht? Wenn du´s probierst, kannst du auch gern die Fehlermeldung von Delphi zitieren. ;)
alex_id Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Fr 16.01.04 15:46 
jetzt wo du es sagst ... das ich das selber nicht gesehen habe ...

und natürlich fehlt dann noch am Anfang dieser XML Datei folgendes :

ausblenden Quelltext
1:
<?xml version="1.0"?>					


danke noch mal ...habe es zwar noch nicht getestet aber dürfte ja funktionieren ...

:wink:

_________________
Es gibt viele Wege, doch man kann nur einen gehen!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 16.01.04 16:47 
Nee, das habe ich nicht gemeint. ;)

Ich wollte darauf hinaus, dass du nach meinem o.g. Beispielcode nicht vorgehen darfst! Wenn du innerhalb der Schleife noch
ausblenden Delphi-Quelltext
1:
xmldoc.appendChild(mainNode);					

ergänzen würdest, dann käme die Fehlermeldung, dass es im XML-Dokument nur einen Hauptknoten geben darf. Und wenn du den Befehl aus der Schleife rausziehst, dann gehen alle zuvor zugewiesenen IDs und Namen verloren. Musst du mal ausprobieren, dann weißt du, was ich meine.

Der Header
ausblenden Quelltext
1:
<?xml version="1.0"?>					

ist in dem Zusammenhang uninteressant.