Hola a tod@s.
Como he visto que alguno de vosotros pregunta cómo guardar el XML de la factura os pongo el código que he preparado (con ayuda de este mismo hilo). No tengo confirmado es si es correcto y todavía tengo dudas sobre cómo firmarlo pero esto crea el fichero.
Código Delphi
[-]
if (RadioButton3.Checked) or (RadioButton5.Checked) then begin
MyXML := TXMLDocument.Create(Application);
parentXML := TXMLDocument.Create( Application );
MyXML.Active := True;
MyXML.Version:='1.0';
MyXML.Encoding:='utf-8';
parentXML.Active := True;
parentXML.Version:='1.0';
parentXML.Encoding:='utf-8';
ARootNode := MyXML.CreateNode('RegistroAlta');
AParentode := parentXML.CreateNode('RegistroAlta');
MOPToSoapDomConvert := TOPtoSOAPDomConvert.Create(Application);
MOPToSoapDomConvert.Encoding := 'utf-8';
MOPToSoapDomConvert.Options :=
[
TSOAPConvertOption.soXXXXHdr,
TSOAPConvertOption.soDontSendEmptyNodes,
TSOAPConvertOption.soUTF8InHeader,
TSOAPConvertOption.soSendUntyped,
TSOAPConvertOption.soSendMultiRefObj,
TSOAPConvertOption.soTryAllSchema,
TSOAPConvertOption.soRootRefNodesToBody,
TSOAPConvertOption.soCacheMimeResponse,
TSOAPConvertOption.soUTF8EncodeXML,
TSOAPConvertOption.soSOAP12];
newNode := Factura.RegistroAlta.ObjectToSOAP( ARootNode, AParentode, MOPToSoapDomConvert, 'RegistroAlta',
Swdsl,'T',[ocoDontPrefixNode,ocoDontPutTypeAttr], RefId );
MyXML.DocumentElement := NewNode;
StringStream := TStringStream.Create;
try
sAux:=CarpetaXML+FormatDateTime('YYYY',XSDateTime.AsDateTime)+'\';
CreateDir(sAux);
sAux:=sAux+FormatDateTime('MM',XSDateTime.AsDateTime)+'\';
CreateDir(sAux);
MyXML.SaveToStream(StringStream);
sAux:=sAux+Factura.RegistroAlta.IDFactura.NumSerieFactura+'.XML';
StringStream.SaveToFile(sAux);
finally
StringStream.Free;
XSDateTime.Free;
end;
end;