... und genau da häng ich grad mit meinem Gehirn fest.
Ich frag ja jetzt den vorhandenen Paramter mittels XPath ab,
das heist ich bekomm nil wenn der Knoten nicht existiert
dann möcht ich den erstellen, aber eben mit dem übergebenen String des XPath
Im prinzip sollte dann die Funktion so arbeiten
Function CreateNodepath(rootnode:IXMLNOde; nodepath:String):IXMLNode;
begin;
letzten Node extrahieren
dann mittels XPath prüfen ob parentNode existiert
wenn ja dann addchild(letzter Node)
wenn nein dann Createnodepath rekursiv aufrufen
neuen Node zurück geben
end;
so in etwa, aber wie ich das dann in Code Umsetze bekomm ich die Gehirnwindung nicht ganz zusammen. Vor allem wie zerlege ich den String des XPath um die Nodes dann zu erstellen. Gibts da passende Stringfunktionen die vom StringEnde bis gewähltes Zeichen einen String wegschneiden können?? Denn ich denke so in der art brauch ich was
hab jetzt mal versucht was zu schreiben, noch ungetestet ich wollte zuerst noch euch drüber gucken lassen
Delphi-Quellcode:
class function TXPathhelper.CreateNode(xnRoot: IXMLNode;
const nodepath: WideString):IXmlNode;
var a,newpath,newchild:
String;
i:Integer;
wantednode:IXMLNode;
begin
a:=nodepath;
i:=length(a);
while (a[i]<>'
/')
or (i>0)
do dec(i);
if i>0
then begin;
//was gefunden dann extrahieren und XPath anwenden
newpath:=copy(nodepath,1,i-1);
newchild:=copy(nodepath,i+1,length(nodepath)-i);
wantednode:=TXPathhelper.SelectNode(xnroot,newpath);
if wantednode<>
nil then begin;
xnroot.AddChild(newchild);
result:=TXPathhelper.SelectNode(xnroot,nodepath);
end
else result:=TXPathhelper.CreateNode(xnroot,newpath);
end;
end;