Código:
pero por más que intento solo consigo el siguiente nodo:<cfdi:Receptor/>
Código:
ya le he dado vueltas por muchos lados y no lo consigo mi bean principal es el siguiente:<cfdi:receptor/>
Código:
mi clase receptor la tengo así:public void createXmlSchema() throws JAXBException{ try{ ServletContext servletContext= (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext(); File file = new File(servletContext.getRealPath("files/test.xml")); ComprobanteMine comprobante = new ComprobanteMine(); comprobante.setVersion("3.2"); comprobante.setSerie("HDS"); comprobante.setFolio("3"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss"); comprobante.setFormaDePago("PAGO EN UNA SOLA EXHIBICIÓN"); comprobante.setCondicionesDePago("CONTADO"); comprobante.setMetodoDePago("Efectivo"); comprobante.setNoCertificado("20001000000200001745"); comprobante.setMotivoDescuento("Deducciones nómina"); comprobante.setTipoCambio("1.00"); comprobante.setMoneda("MXP"); comprobante.setLugarExpedicion("Aguascalientes, Ags"); //Adición clase receptor ReceptorMine rec = new ReceptorMine(); rec.setRfc("RRRFFFCCC"); rec.setNombre("NOm NOm NOm"); rec.setUsoCfdi("test"); comprobante.setReceptor(rec); JAXBContext context = JAXBContext.newInstance(ComprobanteMine.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"); m.marshal(comprobante, System.out); m.marshal(comprobante, file); }catch(Exception ex){ System.out.println(ex.getMessage()); } }
Código:
Y mi clase Comprobante la tengo algo así:package Controlador; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "Receptor",namespace = "cfdi") @XmlType(name ="Receptor",propOrder = {"rfc", "nombre", "usoCfdi"}) public class ReceptorMine { @XmlAttribute(name = "UsoCFDI") public String getUsoCfdi() { return usoCfdi; } public void setUsoCfdi(String usoCfdi) { this.usoCfdi = usoCfdi; } @XmlAttribute(name = "Rfc") public String getRfc() { return rfc; } public void setRfc(String rfc) { this.rfc = rfc; } @XmlAttribute(name = "Nombre") public String getNombre() { return Nombre; } public void setNombre(String Nombre) { this.Nombre = Nombre; } private String rfc; private String Nombre; private String usoCfdi; }
Código:
Como comentario adicional cree un package para controlar los names spaces que está definido de la siguiente manera:package Controlador; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(namespace = "http://www.sat.gob.mx/cfd/3", name="Comprobante") public class ComprobanteMine { public ComprobanteMine(){ } private ReceptorMine Receptor; private String version; private String Serie; private String Folio; private String fecha; private String tipoDeComprobante; private String formaDePago; private String condicionesDePago; private String metodoDePago; private String noCertificado; private String subTotal; private String descuento; private String motivoDescuento; private String TipoCambio; private String Moneda; private String total; private String LugarExpedicion; private String sello; public ReceptorMine getReceptor(){ return Receptor; } public void setReceptor(ReceptorMine Receptor){ this.Receptor=Receptor; } @XmlAttribute(name = "Version") public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } @XmlAttribute(name = "Serie") public String getSerie() { return Serie; } public void setSerie(String Serie) { this.Serie = Serie; } @XmlAttribute(name = "Folio") public String getFolio() { return Folio; } public void setFolio(String Folio) { this.Folio = Folio; } @XmlAttribute(name = "Fecha") public String getFecha() { return fecha; } public void setFecha(String fecha) { this.fecha = fecha; } @XmlAttribute(name = "TipoDeComprobante") public String getTipoDeComprobante() { return tipoDeComprobante; } public void setTipoDeComprobante(String tipoDeComprobante) { this.tipoDeComprobante = tipoDeComprobante; } @XmlAttribute public String getFormaDePago() { return formaDePago; } public void setFormaDePago(String formaDePago) { this.formaDePago = formaDePago; } @XmlAttribute public String getCondicionesDePago() { return condicionesDePago; } public void setCondicionesDePago(String condicionesDePago) { this.condicionesDePago = condicionesDePago; } @XmlAttribute public String getMetodoDePago() { return metodoDePago; } public void setMetodoDePago(String metodoDePago) { this.metodoDePago = metodoDePago; } @XmlAttribute public String getNoCertificado() { return noCertificado; } public void setNoCertificado(String noCertificado) { this.noCertificado = noCertificado; } @XmlAttribute public String getSubTotal() { return subTotal; } public void setSubTotal(String subTotal) { this.subTotal = subTotal; } @XmlAttribute public String getDescuento() { return descuento; } public void setDescuento(String descuento) { this.descuento = descuento; } @XmlAttribute public String getMotivoDescuento() { return motivoDescuento; } public void setMotivoDescuento(String motivoDescuento) { this.motivoDescuento = motivoDescuento; } @XmlAttribute public String getTipoCambio() { return TipoCambio; } public void setTipoCambio(String TipoCambio) { this.TipoCambio = TipoCambio; } @XmlAttribute public String getMoneda() { return Moneda; } public void setMoneda(String Moneda) { this.Moneda = Moneda; } @XmlAttribute public String getTotal() { return total; } public void setTotal(String total) { this.total = total; } @XmlAttribute public String getLugarExpedicion() { return LugarExpedicion; } public void setLugarExpedicion(String LugarExpedicion) { this.LugarExpedicion = LugarExpedicion; } @XmlAttribute public String getSello() { return sello; } public void setSello(String sello) { this.sello = sello; } }
Código:
Les mando saludos y agradecimientos por adelantado. @XmlSchema(namespace = "http://www.sat.gob.mx/cfd/3", xmlns = { @XmlNs(namespaceURI = "http://www.sat.gob.mx/cfd/3", prefix = "cfdi"), @XmlNs(namespaceURI = "http://www.w3.org/2001/XMLSchema-instance", prefix = "xsi") }, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package Controlador; import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema;