Saltar al contenido

Cómo lidiar con un carácter XML no válido (Unicode: 0x1a)

Un Usuario hizo la siguiente pregunta

Hola,

Tengo un caso de archivo -> PI -> ECC.

De vez en cuando recibo un error de mapeo y este es el error:

com.sap.aii.utilxi.misc.api.BaseRuntimeException:

Se encontró un carácter XML no válido (Unicode: 0x1a)

en el contenido del elemento del documento.

El error se debe al hecho de que el archivo que recibo contiene nombres con un carácter Unicode.

Solo puedo hacerlo visible en el Bloc de notas. La pequeña flecha en el nombre es la causa del error.

Si elimino la pequeña flecha del nombre, el procesamiento funciona perfectamente.

Así que esa es mi descripción del error.

Estaba mirando scn y obtuve algunos informes sobre el problema, pero nunca se resolvió correctamente.

Ahora, por supuesto, sería mejor no lanzar el carácter Unicode en primer lugar, pero eso no es posible en este momento, por lo que estoy buscando formas de eliminar el carácter antes de que se cree el XML.

¿Hay formas de hacer esto?

Mis pensamientos van a «Ejecutar el comando del sistema operativo antes del procesamiento de mensajes»

¿Es esa una opción para eliminar el personaje? Si es así, ¿qué pasos debo seguir para lograrlo?

¿Hay otras opciones?

Sobre

Robert

error unicode en xml.png
(344 B)

5 respuestas

  • Hola robert

    ¿Ha intentado cambiar la codificación del archivo?

    Tuve un problema similar y lo resolví arreglando la codificación de archivos como UTF-16, que administra los caracteres UNICODE.

    Fabio

  • ¡Hola Robert!

    Puede intentar usar el siguiente código Java para reemplazar ese carácter:

    private String stripNonValidXMLCharacters(String in) {
    if (in == null || ("".equals(in))) return null;
    StringBuffer out = new StringBuffer(in);
    for (int i = 0; i < out.length(); i++) {
    if(out.charAt(i) == 0x1a) {
    out.setCharAt(i, '-');
    }
    }
    return out.toString();
    }

    Acerca de Evgeniy.

  • Hola robert

    Pensándolo bien. Después de ver la respuesta de «Fabio», estoy actualizando mi respuesta.

    Puede ser un problema de codificación. Pruebe MessageTransformationBean: Transfer.ContentType = text / xml; charset = «cp1252» O utf-8.

    Más opciones / información Manejo de la página de códigos, codificación de caracteres en SAP PI / PO

    O

    La mejor solución es pedirle al sistema que envíe una fuente XML bien formada (el XML que falla en el mapeo de mensajes no está bien formado). Si el programa fuente no se puede cambiar, siga la solución a continuación.

    XML no está bien formado – & problema

    Cómo crear un mapeo de Java en SAP PI / PO

    En el mapeo de Java .replaceAll («&», «& amp;») O .replaceAll («& # 26;», «») // elimine ese sustituto. FYI. Tabla de caracteres Unicode

  • Ex miembro

    Hola,

    Primero intenté configurar la codificación del archivo en UTF-16

    Pero eso no corrigió mi error.

    Luego probé los consejos sobre el módulo. Instalé MessageTransformBean de la siguiente manera:

    ¿Está hecho correctamente? Si es correcto, tampoco ayuda. Si no es correcto, obtenga consejos sobre cómo hacerlo bien.

    Sobre

    Robert

    codificación de archivos.JPG
    (21,8 kB)

    módulos.JPG
    (51,8 kB)

  • Ex miembro

    Este mensaje ha sido modificado.