Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi in XML reinschreiben... (https://www.delphipraxis.net/67252-xml-reinschreiben.html)

spacewolf 11. Apr 2006 21:44


in XML reinschreiben...
 
Moin jetzt hab ich es geschaft XML auszulesen und in eine Datenbank zu speichern, nun will ich aber in eine schon bestehende XML-Datei reinschreiben. (von OpenOFfice)

Die ist folgendermaßen aufgebaut:
XML-Code:
<block-list:block-list>
-<block-list:block block-list:abbreviated-name="(c)" block-list:name="©"/>
-<block-list:block block-list:abbreviated-name="(r)" block-list:name="®"/>
-<block-list:block block-list:abbreviated-name="Accesoir" block-list:name="Accesoire"/>
:gruebel:

Ich habe mir das folgendermaßen gedacht:
Delphi-Quellcode:
procedure WriteOOAutoKorrekt(AOwner:TComponent);
var
  kn, knSequ      : integer;
  knoten, element : IDOMNode; //atname, cardAtName//SequKnoten, //cardElement,
  value1, value2   : string;
  stream          : TStream;

  XMLDoc     : TXMLDocument;

  newChild, newNode : IDOMNode;
begin
 XMLDoc := TXMLDocument.Create(AOwner);

 newChild.???
 newChild.nodeName := 'neuerTest';
 newNode.nodeValue := 'neuerTest222';

 XMLDoc.LoadFromFile('c:\test.xml');
 XMLDoc.DocumentElement.DOMNode.ChildNodes.length;
 XMLDoc.DocumentElement.DOMNode.insertBefore(newNode,newChild);
 XMLDoc.AddChild('test','test');
 XMLDoc.SaveToFile('c:\test2.xml');
end;
Aber so richtig weiter komm ich nicht...

:wiejetzt:

Wie gehts weiter wenn ich da einen neuen Eintrag reinschreiben will.

danke für alle Gedanken

euer Andreas

PS: es geht darum die Autokorrektur von OpenOffice auszulesen
und serverbasierend zu speichern. :stupid:

spacewolf 12. Apr 2006 13:32

ähm...
 
falls da keiner durchblickt, das ist nur son Sourceschnipsel...
damit man erkennt welche Objekte ich bisher beim auslesen verwendet habe *hüstel*

hab das Netz abgegraßt nach Tutorials um zu schauen wie ich da wat schreibe,
aber alles was ich fand wirkte hochkompliziert... :wall: Hab da sozusagen nix gecheggt... :pale:

dabei will ich doch nur n Element schreiben :roll:

der Andreas

spacewolf 14. Apr 2006 15:03

Tagebucheintrag
 
eine etwas andere Herangehensweise...

Delphi-Quellcode:
procedure XMLAdd;
var
  XMLDoc : TXMLDocument;
  iNode : XMLNode;
begin
  XMLDoc := TXMLDocument.Create(nil);
  XMLDoc.LoadFromFile('c:\test.xml');

  iNode := XMLDoc.CreateNode('test'); // AddChild('tree2xml');

  iNode.AddChild('einitem');
  iNode.Attributes['text'] := 'der text';
  iNode.Attributes['imageIndex'] := 'einindex';
  iNode.Attributes['stateIndex'] := 'einstatus';

  //will leider DOMNode: XMLDoc.DocumentElement.DOMNode.appendChild(iNode);

  XMLDoc.SaveToFile('c:\neutest.xml');

  XMLDoc := nil;
end;
aber geht auch net :wall:

:stupid:

marabu 14. Apr 2006 16:19

Re: in XML reinschreiben...
 
Hallo Andreas,

wenn block-list das Wurzel-Element des Dokuments ist, dann kannst du so einen zusätzlichen Knoten hinten anfügen:

Delphi-Quellcode:
procedure TDemoForm.AddButtonClick(Sender: TObject);
var
  xn: IXMLNode;
begin
  with XMLDocument do
  begin
    xn := DocumentElement.AddChild('block-list:block', '');
    xn.Attributes['block-list:abbreviated-name'] := 'mfg';
    xn.Attributes['block-list:name'] := 'Mit freundlichen Grüßen';
  end;
end;
Grüße vom marabu

spacewolf 18. Apr 2006 13:57

uii...
 
Super,

DANKE !!! :bouncing4: :bounce1: :bounce2: :witch: :coder:


:dp:


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