XML caracteres especiales ( como ñ ) en el nombre de un atributo

publicado por: Anonymous

Sucede la ley de mi país requiere un nuevo atributo en el XML de uno de sus tramites ( CFDI ) http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/Complementoscfdi/nomina12.pdf pag.37

<xs:attribute name="NumAñosServicio" use="required">
 <xs:annotation>
 <xs:documentation>Atributo requerido para expresar el número de años de servicio del trabajador. Se redondea al entero
superior si la cifra contiene años y meses y hay más de 6 meses.</xs:documentation>

El fragmento de xml por lo tanto queda así:

<nomina12 NumAñosServicio="12"/>

Personalmente nunca me había encontrado un nombre de atributo que tuviera un carácter especial ñ en su nombre. Incluso dudo que sea valido hacerlo ni mucho menos que sea una practica recomendable.

El documento se define con UTF-8 : <?xml version=“1.0” encoding=“utf-8”?>

El sistema responsable de emitir este documento actualmente utiliza SAXParser con jdk 1.7 y falla al intentar parsearlo truncándose en “NumA” aunque todo el encoding y el charset sea con UTF-8.

Estoy tratando de encontrar un approach para solucionar este problema y ya que es un requerimiento que entra en vigor en año nuevo creo que muchos están pasando por esta situación. Cualquier ayuda o información al respecto estaré muy agradecido.

solución

Solucionado:

Es importante en el parsing asegurarse de especificar también el uso de UTF-8:

          Reader reader = new InputStreamReader(inputStream,"UTF-8");

          InputSource is = new InputSource(reader);
          is.setEncoding("UTF-8");

          saxParser.parse(is);
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *