Página 1 de 1
Cómo ordeno los atributos de un nodo XML
Publicado: Vie Jun 24, 2011 10:14 pm
por eduardoaap
Hola a todos:
Les comento mi duda. Debo generar la addenda de Mabe, para ello recibí el XSD de la misma y con JAXB generé su clase correspondiente, sin embargo tengo un problema. Cuando se genera el XML, los nodos se generan en el órden correcto, pero no así sus atributos.
Lo único que sé es que con lo siguiente:
Código: Seleccionar todo
@XmlType(name = "", propOrder = { "moneda", "proveedor", "entrega", "detalles", "descuentos", "subtotal", "traslados", "retenciones", "total"})
Le especifico en que orden quiero los nodos. Pero mi problema es como indicar en qué orden quiero que aparezcan los atributos de los nodos. Por ejemplo:
Actualmente los atributos del nodo raíz mabe:Factura me aparece en el siguiente orden:
Código: Seleccionar todo
<mabe:Factura fecha="2011-04-14" folio="1" tipoDocumento="FACTURA" version="1.0">
y yo quiero que me aparezcan de la siguiente forma:
Código: Seleccionar todo
<mabe:Factura version="1.0" tipoDocumento="FACTURA" fecha="2011-04-14" folio="1" >
Sin embargo no he encontrado de qué manera puedo especificar este orden.
¿Alguien puede ayudarme?, adjunto la clase de la Addenda generada por JAXB
De antemano muchas gracias.
Re: Cómo ordeno los atributos de un nodo XML
Publicado: Vie Jun 24, 2011 10:34 pm
por Dado
No se si este sea tu caso pero te menciono un detalle que me costo descubrir.
Por alguna razon que todavia no termino de entender el (mugre) Internet Explorer 9 (nueve) CAMBIA EL ORDEN DE LOS ATRIBUTOS cuando se visualiza el XML y no solo eso, tambien por sus pantalones le pone el encabezado <?xml version="1.0" encoding="utf-8" ?> aun si tu XML no trae ese encabezado lo muestra en pantalla.
De hecho, como programador eso no me gustaba y degrade mi explorer a la version 8.
Sacame de la duda, estas usando explorer 9?
Re: Cómo ordeno los atributos de un nodo XML
Publicado: Lun Jun 27, 2011 12:15 pm
por eduardoaap
Efectivamente estoy utilizando el explorer 9, sin embargo, los archivos XML que genero no los abro con el explorer, sino con el editor Altova XMLSpy y el orden de los atributos no es como yo lo quiero.
Re: Cómo ordeno los atributos de un nodo XML
Publicado: Lun Jun 27, 2011 1:00 pm
por Dado
eduardoaap escribió:Efectivamente estoy utilizando el explorer 9, sin embargo, los archivos XML que genero no los abro con el explorer, sino con el editor Altova XMLSpy y el orden de los atributos no es como yo lo quiero.
Mmmmh, la cosa es que XMLSpy pudiera estar usando la libreria de Windows para parsear el XML (
vease aqui) y esa libreria es parte del ie9
La ultima prueba, abrelo con el bloc de notas y revisa el orden de tus atributos.
NOTA: Una disculpa por anticipado si te estoy guiando por el lado equivocado, pero bueno, es mi granito de arena y realmente creo que pudiera ser problema del visor mas que de tu programa.
Re: Cómo ordeno los atributos de un nodo XML
Publicado: Mié Jun 29, 2011 11:38 am
por eduardoaap
Muchas gracias por tu ayuda.Ya descubrí cual era el detalle, sólo bastaba con acomodar en mi clase los atributos pero en orden inverso a como yo lo quiero.
Inicialmente estaba así:
Código: Seleccionar todo
public class Factura{
@XmlElementAttribute(required=true)
protected String version;
@XmlElementAttribute(required=true)
protected String tipoDocumento;
@XmlElementAttribute(required=true)
protected String folio;
@XmlElementAttribute(required=true)
protected XmlGregorianCalendar fecha;
}
Y el resultado en el XML era:
Código: Seleccionar todo
<mabe:Factura fecha="2011-06-27" folio="FW26" tipoDocumento="FACTURA" version="1.0">
Entonces decidí colocar en orden inverso los atributos directamente en la clase, de la siguiente manera.
Código: Seleccionar todo
public class Factura{
@XmlElementAttribute(required=true)
protected XmlGregorianCalendar fecha;
@XmlElementAttribute(required=true)
protected String folio;
@XmlElementAttribute(required=true)
protected String tipoDocumento;
@XmlElementAttribute(required=true)
protected String version;
}
y efectivamente, cuando se generó el XML, el orden de los atributos ya era correcto.
Código: Seleccionar todo
<mabe:Factura version="1.0" tipoDocumento="FACTURA" folio="FW26" fecha="2011-06-27">
De cualquier forma muchas gracias por el apoyo.
Saludos!!