Hallo,
ich versuche einen SoupRequest im HttpRioBeforeExec zu bearbeiten. Allerdings klappt das ganze nicht wie gewünscht:
Wenn ich so was mache:
Delphi-Quellcode:
oXML:=TXMLDocument.Create(Application);
try
oxml.XML.Text:=SOAPRequest;
oXML.Active:=true;
oXML.XML.Text:=StringReplace(oXML.XML.Text,'<Blub><BlubId>','<Blub xsi:type="BlubTyp"><BlubId>',[rfReplaceAll]);
SOAPRequest:=oXML.XML.Text;
oXML.XML.SaveToFile('e:\test_1.xml');
dann wird in dem
XML das Ersetzen korrekt durchgeführt. Wenn ich das ganze jetzt über Attribute versuche:
Delphi-Quellcode:
oXML:=TXMLDocument.Create(Application);
try
oxml.XML.Text:=SOAPRequest;
oXML.Active:=true;
oNodeBlub:=(oXML.DOMDocument as IDOMNodeSelect).selectNodes('//BlubId');
for iINdex:=0 to oNodeBlub.length-1 do begin
oNode:=oNodeBlub.item[iINdex];
oNode:=oNode.parentNode;
oAttr:=oXML.DOMDocument.createAttribute('xsi:type');
oAttr.nodeValue:='BlubTyp';
oNode.attributes.setNamedItem(oAttr);
end;
SOAPRequest:=oXML.XML.Text;
oXML.XML.SaveToFile('e:\test_1.xml');
Dann klappt das nicht. In der Text_1.xml ist kein Attribut enthalten. Allerdings ist nach dem Node.Attributes.SetNamedItem() der Wert Node.Attributes.Length=1 (vorher 0) - also wurde ein Attribut hinzugefügt.
Wenn ich jetzt dieses
XML (ohne Attribut) in einer anderen Prozedur lade und den selben Code oben darauf los lasse, dann wird das Attribut gesetzt und gespeichert.
Ich dreh langsam durch. Ich versteh nich was ich falsch mache. Würde mich echt freuen, wenn mir jemand helfen kann..
Grüße