Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Knoten einfügen in xmldocument? (https://www.delphipraxis.net/108885-knoten-einfuegen-xmldocument.html)

Grolle 20. Feb 2008 18:14


Knoten einfügen in xmldocument?
 
Hallo,

kann mir jemand sagen, warum das nicht klappt?

Delphi-Quellcode:
  xmlDoc := NewXMLDocument;
  xmlDoc.Version := '1.0';
  xmlDoc.Encoding := 'iso-8859-1';
  xmlDoc.Active:=true;
  root := xmlDoc.AddChild('navigation');
  root.SetAttributeNS('project','','Testprojekt');
  SetLength(tempdata,5);
  for i := 0 to helplist.Count-1 do
    begin
      tempData := explode(';',helplist.Strings[i]);
      node := xmlDoc.DocumentElement.AddChild('test'+inttostr(i)); // hier sollten eigentlich die Knoten eingefügt werden!
      node.Text := 'Test';                                         // geht auch nicht mit root.AddChild('test'+inttostr(i));
      for j := 0 to high(tempdata) do
        begin
        end;
    end;
 
  xmlDoc.SaveToFile('C:\1.xml');
Die Knoten werden aber nicht eingefügt ?!?

Viele Grüße ...

marabu 20. Feb 2008 19:04

Re: Knoten einfügen in xmldocument?
 
Hallo Stefan,

die Knoten werden zuverlässig eingefügt. Schaust du vielleicht an der falschen Stelle nach?

Füge einfach zur Kontrolle nach der Schleife noch eine Zeile ein:

Delphi-Quellcode:
 ShowMessage(xmlDoc.XML.Text);
Übrigens: Der Aufruf von NewXMLDocument() produziert ein Speicherleck.

Freundliche Grüße

Grolle 20. Feb 2008 19:10

Re: Knoten einfügen in xmldocument?
 
Zitat:

Zitat von marabu
die Knoten werden zuverlässig eingefügt. Schaust du vielleicht an der falschen Stelle nach?
Füge einfach zur Kontrolle nach der Schleife noch eine Zeile ein:
Delphi-Quellcode:
 ShowMessage(xmlDoc.XML.Text);

Das habe ich auch schon geprüft, aber im gespeicherten Dokument tauchen sie dann nicht auf!
Zitat:

Zitat von marabu
Übrigens: Der Aufruf von NewXMLDocument() produziert ein Speicherleck.

:gruebel:

Viele Grüße ...

marabu 20. Feb 2008 19:19

Re: Knoten einfügen in xmldocument?
 
Zitat:

Zitat von Grolle
... Das habe ich auch schon geprüft, aber im gespeicherten Dokument tauchen sie dann nicht auf! ...

Bei mir schon.

Info zum Speicherleck - in D7 ist NewXMLDocument folgendermaßen implementiert:

Delphi-Quellcode:
function LoadXMLData(const XMLData: DOMString): IXMLDocument; overload;
begin
  Result := TXMLDocument.Create(nil);
  Result.LoadFromXML(XMLData);
end;
Die Instanz von TXMLDocument wird nirgendwo gespeichert - und ohne Owner fühlt sich dann niemand für das Freigeben des Speichers zuständig.

Grolle 20. Feb 2008 19:34

Re: Knoten einfügen in xmldocument?
 
Zitat:

Zitat von marabu
Zitat:

Zitat von Grolle
... Das habe ich auch schon geprüft, aber im gespeicherten Dokument tauchen sie dann nicht auf! ...

Bei mir schon.

Habs jetzt nochmal getestet. Im gespeicherten Dokument steht immer nur der erste Knoten (navigation)?!?

Zitat:

Zitat von marabu
Info zum Speicherleck - in D7 ist NewXMLDocument folgendermaßen implementiert:
Delphi-Quellcode:
function LoadXMLData(const XMLData: DOMString): IXMLDocument; overload;
begin
  Result := TXMLDocument.Create(nil);
  Result.LoadFromXML(XMLData);
end;
Die Instanz von TXMLDocument wird nirgendwo gespeichert - und ohne Owner fühlt sich dann niemand für das Freigeben des Speichers zuständig.

Ahhh, danke für die Info!

// Edit: Ich glaube, ich habe den Fehler gefunden. Resultierte aus einer übergeordneten Schleife! Thanks!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz