Ok, he estado haciendo pruebas para convertir ahora de XML al objeto adecuado y tengo esta función:
Código:
function CargarRegistroAltaDesdeXML(const XMLText: string): RegistroFacturaType;
var
XMLDoc: IXMLDocument;
RootNode: IXMLNode;
SOAPConv: TOPToSoapDomConvert;
Resultado: RegistroFacturaType;
begin
XMLDoc := TXMLDocument.Create(nil);
try
XMLDoc.LoadFromXML(XMLText);
XMLDoc.Active := True;
RootNode := XMLDoc.DocumentElement;
SOAPConv := TOPToSoapDomConvert.Create(nil);
try
SOAPConv.Encoding := 'utf-8';
SOAPConv.Options := [
TSOAPConvertOption.soDontSendEmptyNodes,
TSOAPConvertOption.soSendUntyped,
TSOAPConvertOption.soTryAllSchema,
TSOAPConvertOption.soUTF8EncodeXML
];
Resultado := RegistroFacturaType.Create;
Resultado.SOAPToObject(RootNode, RootNode, SOAPConv);
Result := Resultado;
finally
SOAPConv.Free;
end;
finally
XMLDoc := nil;
end;
end;
Me estoy liando un poco con el objeto que debo usar: RegistroFacturaType, RegistroFacturacionAltaType... pero creo que con calma lo conseguiré.
Si alguien puede echarme un cable se lo agradecería, porque no sé si voy por buen camino o no. Nunca he usado los conversores estos Soap <-> XML