Thema: Delphi XML-Dateien

Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#5
  Alt 8. Sep 2002, 12:29
Ich weiß jetzt nicht, welches Interface zu benutzt. Wie ich schon beim Thema "HTML Help Collection" schrieb habe ich mich für "IXMLDOMDocument2" entschieden, was aber wohl XML 3.0 als Minimum erfordert. Wenn du die Typbibliothek von XML 3.0 importierst, kannst du
Code:
var
  xmldoc : DOMDocument;
benutzen, was mit dem erwähnten Interface identisch ist. Bei einer neueren Version (XML 4) wird es dann wahrscheinlich auch ein aktuelleres Interface sein.

Du lädtst also die XML-Datei:
Code:
if(xmldoc.load('MeineXML.xml')) then
  begin
setzt eine Referenz auf den Hauptknoten (bei dir "oe")
Code:
    node := xmldoc.documentElement;
    // zum beweis -->
    ShowMessage(node.xml);
und erstellst deinen neuen Knoten:
Code:
    sub1 := xmldoc.createElement('bm');
    sub2 := xmldoc.createElement('n');
    sub2.Text := 'bla2';
    sub1.appendChild(sub2);

    sub2 := xmldoc.createElement('u');
    sub2.Text := 'www.nix.de';
    sub1.appendChild(sub1);
und den neuen Knoten hängst du dann ein:
Code:
    node.appendChild(sub1);
    xmldoc.save('MeineXML2.xml');
  end;
Deine XML-Datei sollte jetzt so aussehen:
Code:
<?xml version="1.0">
<oe>
 <bm>
  <n>blabla</n>
  <u>www.irgendwas.de</u>
 </bm>
 <bm>
  <n>bla2</n>
  <u>www.nix.de</u>
 </bm>
</oe>
Hattest du dir das so gedacht? Wenn du die URL in dem schon vorhandenen Knoten ersetzen willst, dann musst du vorher schauen, ob ein Knoten namens "bm" schon da ist. Das geht über die "childNodes" von der "node"-Variablen und lässt sich am besten mit einer Stringliste usw. vergleichen.

Die Variablendeklarationen vielleicht noch
Code:
var
  node,
  sub1,
  sub2 : IXMLDOMNode;
Kann sein, dass ich mich jetzt irgendwo vielleicht vertippt habe (war nur aus´m Kopf), aber das Prinzip (würde ich denken) sieht so aus.
  Mit Zitat antworten Zitat