Meine Befürchtung hat sich bestätigt: der Code funktioniert so nicht, weil die Namespaces nicht passen.
Delphi-Quellcode:
uses ..., GetCommonLinksPropertiesResponse;
var
LXMLBody: IXMLBodyType;
LXMLGCLP: IXMLGetCommonLinkPropertiesResponseType;
begin
LXMLDoc:= FRITZBox_SOAPDownload(FRITZBOX_UPNP_WANCommonIFC1_URL, FRITZBOX_URN_WANCOMMONIFC, cGCLP, False);
LXMLBody:= GetCommonLinkPropertiesResponse.GetEnvelope(LXMLDoc).Body;
LXMLGCLP:= LXMLBody.GetCommonLinkPropertiesResponse;
Bei der letzten Zeile rummst es mit "Node ... not found". Wahrscheinlich noch wichtig: Die
Exception kommt nur, wenn
LXMLDoc.ReadOnly:= True
und
LXMLDoc.Options
den Wert
doNodeAutoCreate
nicht beinhaltet. Trifft beides nicht zu, werden leere Knoten in LXMLDoc angelegt, und logischerweise kommen so auch keine Werte für die Eigenschaften NewWANAccessType & Co zurück.
Die Sache muss also anders aufgebaut sein, damit sie funktioniert und den geänderten Namespace berücksichtigt. Da sind wir wieder zurück beim FindNode, oder wie würde man das normalerweise machen, wenn nicht damit?
Grüße
Dalai