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;


