Ver Mensaje Individual
  #225  
Antiguo 02-03-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Reputación: 0
jlegido Va por buen camino
Cita:
Empezado por angelhorse Ver Mensaje
Buenas!
Yo lo he hecho a base de XElements (Estructura XML) y Strings.
Te digo más o menos como lo he hecho (Que supongo que no será la forma más óptima pero es como se me ha ocurrido)

Para poner los prefijos de Sii, SiiLR y demás he usado esto:
public static XNamespace NAMESPACE = @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd";

Para crear los nodos XElement con sus prefijos:
XElement root = new XElement(NAMESPACE + "SuministroLRFacturasEmitidas");

Para poner la cabecera yo he usado esto:
XElement Envelope = new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", @"*schemas.xmlsoap.org/soap/envelope/"),
new XAttribute(XNamespace.Xmlns + "siiLR", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"),
new XAttribute(XNamespace.Xmlns + "sii", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"));

XElement Header = new XElement(soapenv + "Header");
Envelope.Add(Header);

String file = Utilidades.CreateXMLFile(Envelope, i, "Alta Facturas Emitidas");

Mi Utilidades.CreateXMLFile:

XmlTextWriter writer = new XmlTextWriter(archivoPath, Encoding.UTF8); //Con esto de aquí le pones la primera línea esa "<?xml version="1.0" encoding="UTF-8"?>"
writer.WriteStartDocument();
writer.Formatting = Formatting.Indented;
xml.WriteTo(writer);
writer.Flush();
writer.Close();

Espero haberte ayudado.
P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD
Hola angelhorse,
Si, muchas gracias,me ha sido util tu codigo. Yo tenia ya algo parecido hecho con XmlWriter.
De todas formas , me faltaria saber que contiene la variable soapenv, que tu pones en varias partes del codigo, p.e.
Código:
XElement Header = new XElement(soapenv + "Header");
Otra duda, dado que tu generas el xml de esta forma, ¿ como lo envias a AEAT ?, usando un metodo HttpRequest o Serializar y usas las clases generadas mediante wsdl.exe, enviandolo asi

Código:
  resul = proxy.SuministroLRFacturasEmitidas(AsuminstroFacturasEmitidas)
Gracias de nuevo.
Responder Con Cita