1. Das hier
Zitat:
XMLDoc.DocumentElement := XMLDoc.CreateElement('daten');
ist relativ sinnlos, weil du danach den
XML-Code sowieso aus der Datei holst, bzw. im Code erzeugst.
2. Bist du sicher, dass dein Dokument so aufgebaut ist
Code:
<Daten>
<prowo>
<daten1>
<!--
1 als Beispiel, weil ich nicht weiß, was
"id := Tabelle.Items[Tabelle.ItemIndex].Caption;"
für eine ID zurückgibt
-->
</daten1>
</prowo>
</Daten>
Zumindest sucht deine XPath-Anweisung nach diesem Knoten
Zitat:
node := XMLDoc.documentElement.selectSingleNode('prowo/daten'+id);
3. Das hier ist albern:
Zitat:
if node = nil then showmessage('is da');
Anders herum wird ein Schuh draus. Wenn "node" ungleich
nil ist, dann ist der Knoten da.
4. Ist nicht gesagt, dass der Knoten "daten" dann auch existiert
Zitat:
node.selectSingleNode('daten').text := 'Hallo';
Zur Sicherheit solltest du so vorgehen:
Delphi-Quellcode:
subnode := node.selectSingleNode('daten');
// Knoten existiert
if(subnode <> nil) then
subnode.text := 'Hallo'
else
// Knoten existiert nicht, also: anlegen
begin
subnode := XMLDoc.createElement('daten');
if(subnode <> nil) then
begin
subnode.text := 'Hallo';
node.appendChild(subnode);
end;
end;
(Angabe ohne Gewähr, weil ich an MS-XML gedacht habe.)