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.