Deine Idee war schon nicht schlecht. So geht es auf jeden Fall (Man muss nur wissen welcher oben steht):
Delphi-Quellcode:
procedure TScheduler.VertauscheTagesPlan(p1, p2,pDisp: String);
var node,node1,node2,new: IXMLDOMNode;
begin
node1 := XMLScheduler.selectSingleNode('Planer/Tage/Eintrag[ID="' + p1 + '"]');
node2 := XMLScheduler.selectSingleNode('Planer/Tage/Eintrag[ID="' + p2 + '"]');
if (node1 <> nil) and (node2 <> nil) then
begin
node := node1.parentNode;
new := node2.cloneNode(true);
node.insertBefore(new,node1);
node.removeChild(node2);
end;
end;