hi,
ich bin schon etwas am verzweifeln, irgendwie funktioniert der code nicht, ich krieg nichtmal ne Fehlermeldung oder sonstwas aber der gewünschte effekt ist nicht da.
Meine
XML- Datei sieht so aus:
<?
xml version="1.0" encoding="UTF-8" ?>
<MWLPreferences>
<Gruppen>
<Gruppe1 IconPfad="Wert1" Filter="Wert2" ParentNodeCaption="Wert3" TotalLinkCnt="Wert4" FolderPath="Wert5" Description="Wert6" NodeLevel="Wert7">Gruppenname1</Gruppe1>
<Gruppe2 IconPfad="Wert2" Filter="Wert3" ParentNodeCaption="Wert2" TotalLinkCnt="Wert3" FolderPath="Wert2" Description="Wert3" NodeLevel="1">Gruppenname2</Gruppe2>
<Gruppe3 IconPfad="Wert2" Filter="Wert3" ParentNodeCaption="Wert2" TotalLinkCnt="Wert3" FolderPath="Wert2" Description="Wert3" NodeLevel="1">Gruppenname3</Gruppe3>
</Gruppen>
</MWLPreferences>
Delphi-Quellcode:
//Entfernen einer Gruppe
procedure TForm1.XmlRemoveGroupNode(NodeText: String);
const
SeekingNodeName = 'Gruppen';
var
FInputSource: TXMLInputSource;
FDoc : TDomDocument;
FNode,FPNode: TDomNode;
DataPath : string;
DubNodeText : string;
i : integer;
begin
DubNodeText := trim(NodeText);
try
DataPath := ExtractFilePath(Application.ExeName) ;
FDoc := TDomDocument.Create(DomImplementation1);
FDoc := XMLToDomParser1.ParseFile(DataPath + 'test.xml', False);
for i:= 0 to FDoc.FindFirstChildElement.ChildNodes.Length + 1 do
begin
FNode := FDoc.GetElementsByTagName(SeekingNodeName).Item(0).ChildNodes.Item(i).ChildNodes.Item(0);
if (lowercase(DubNodeText) = lowercase(FNode.NodeValue)) then //Dieser Node muß nun entfernt werden
begin
FPNode := FNode.ParentNode.ParentNode;//Nun sind wir beim node "Gruppen"
FPNode.RemoveChild( FNode); //Dessen Child entfernen, warum funzt das nun nciht?
end;
end;
finally
FDoc.Free;
end;
end;
//So das ist d. Aufruf
procedure TForm1.Button3Click(Sender: TObject);
begin
XmlRemoveGroupNode('Gruppenname3');
end;
Ich möchte d. ChildNode("Gruppe3) von dem Node "Gruppen" entfernen, jedoch funzt es nicht, er findet ja den node, kann ihn aber nicht entfernen.
Was mache ich falsch?