studio programacion móviles desarrollo curso commons aplicaciones java xml parsing unicode

java - móviles - manual de programacion android pdf



Error sobre caracteres XML no válidos en Java (4)

Analizando un archivo xml en Java obtengo el error:

An invalid XML character (Unicode: 0x0) was found in the element content of the document.

El xml proviene de un servicio web.

El problema es que recibo el error solo cuando el servicio web se ejecuta en localhost (windows + tomcat), pero no cuando el servicio web está en línea (linux + tomcat).

¿Cómo puedo reemplazar el char inválido? Gracias.


El carácter Unicode 0x0 representa NULL lo que significa que los datos que está extrayendo contienen un NULO en algún lugar (lo cual no está permitido en XML y, por lo tanto, es su error).

Asegúrese de averiguar qué causa el NULL en primer lugar.

Además, ¿cómo estás interactuando con el servicio web? Si está utilizando Axis, asegúrese de que el WSDL tenga alguna codificación especificada para datos dentro y fuera.


Este es un problema de codificación. O lo lee la ruta de entrada como UTF8 y no lo es o viceversa.

Debe especificar la codificación explícitamente cuando lea el contenido. Ej. Vía

new InputStreamReader(getInputStream(), "UTF-8")

Otro problema podría ser el gato. Intente agregar URIEncoding = "UTF-8" en la configuración del conector de su tomcat en el archivo server.xml. Porque:

Resultó que la especificación JSP dice que si la codificación de página de las páginas JSP no está explícitamente declarada, entonces se debe usar ISO-8859-1 (!).

Tomado de aquí .



arreglado con este código:

String cleanXMLString = null; Pattern pattern = null; Matcher matcher = null; pattern = Pattern.compile("[//000]*"); matcher = pattern.matcher(dirtyXMLString); if (matcher.find()) { cleanXMLString = matcher.replaceAll(""); }