Hi zusammen,
ich habe ein Problem mit dem Löschen eines
XML-Tag mit seinen unter Tags!.
Hier ist mal der Quellcode:-
Delphi-Quellcode:
function ProbandLoeschen(const probandenXML, probandID : string) : string;
var
XMLDOMProbanden : IXMLDOMDocument;
XMLDOMProbandNode : IXMLDOMNode;
begin
XMLDOMProbanden := CoDOMDocument40.Create;
XMLDOMProbanden.async := false;
XMLDOMProbanden.loadXML(probandenXML);
//bestimmer der ID des jeweiligen probanden
XMLDOMProbandNode := XMLDOMProbanden.selectSingleNode ('//proband[name="'+ probandID +'"]');
if(NOT(XMLDOMProbandNode = NIL)) then
begin //löschen des probanden anhand seiner ermittelten ID
XMLDOMProbanden.selectSingleNode('/probanden').removeChild(XMLDOMProbandNode);
end;
result := XMLDOMProbanden.xml;
end;
diese Funktion wird wie folgend in einer andere
Unit aufgerufen:
Delphi-Quellcode:
//Proband löschen (Button von der XSL-Datei)
if(funktion = '
probandloeschen')
then
begin
CreateFileIfNotExist(getDataPath('
xml\probanden.xml'), xorKey);
xmlString:= checkedFileToString(getDataPath('
xml\probanden.xml'), xorKey);
if xmlString = '
'
then
begin
result:= fileToString(getDataPath('
error\manipulated.html'));
exit;
end;
with RequestInfo.Params
do
xmlString:= ProbandLoeschen(xmlString, RequestInfo.Params.Values['
probandID']);
checkedStringToFile(xmlString, getDataPath('
xml\probanden.xml'), xorKey);
result:= CreateHTMLProbandenverwaltung(xmlString, xslString);
exit;
end;
Die
XML-datei der Probanden sieht folgendermassen aus:
Delphi-Quellcode:
<probanden>
<proband>
<id>1</id>
<name>Mustermann</name>
<vorname>Alex</vorname>
.......
<attribut typ="nc">
<beschreibung>Name</beschreibung>
<def_wert>Mustermann</def_wert>
</attribut>
<attribut typ="nc">
<beschreibung>Vorname</beschreibung>
<def_wert>Alex</def_wert>
</attribut>
......
</proband>
...........
</probanden>
ich kann diesen probanden-knoten aber irgendwie nicht löschen!!.
liegt es vielleicht an der Anzahl der unter-Tags?? denn ich habe eine Fuktion zum attribute löschen, die fast genauso aussieht, aber die geht!!
.
kann mir vielleicht jemand weiterhelfen?.
LG.