Pregunta

Estoy usando Java para acceder al servidor de contenido Alfresco a través de su API de servicio web para importar algún contenido en él. El contenido debe tener algunas propiedades NamedValue establecidas en una cadena UTF-8 (cirílica). Sigo recibiendo la excepción del analizador de Sax:

org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1b) was found in the element content of the document.

El código se ve así:

NamedValue[] namedValueProperties = new NamedValue[2];

namedValueProperties[0] = Utils.createNamedValue(Constants.PROP_NAME, name );
namedValueProperties[1] = Utils.createNamedValue("{my.custom.model}myProperty", cyrillicString);

CMLCreate create = new CMLCreate("1", parentReference, null, null, null, documentType, namedValueProperties);
CML cml = new CML();
cml.setCreate(new CMLCreate[]{create});
UpdateResult[] results = null;

try {
   results = WebServiceFactory.getRepositoryService().update(cml);
} catch (...)
    Here comes the "org.xml.sax.SAXParseException"
} 

¿Alguien sabe cómo resolver este problema?

¿Fue útil?

Solución

El problema era que la biblioteca alfresco-web-service-client.jar que utilicé era de distribución 2.9B (estoy llegando al servidor de contenido comunitario 2.9B), y libs de dependencia bcprov-jdk15-136.jar y xmlsec-1.4. 0.jar no fueron adecuados (permanecieron viejos de 2.1 dist). Debería haber usado bcprov-jdk15-137.jar y xmlsec-1.4.1.jar que se implementan junto con la distribución 2.9B.

Otros consejos

La forma más fácil de evitarlo es pensar en escapar de cyrillicString, por ejemplo con escapeXml de Jakarta Commons, o convirtiendo la cadena completa en entidades XML si no es suficiente. Pero a la larga, Alfresco debería arreglarse, por lo que abrir un boleto también puede ser una buena opción.

Es un poco difícil saber si esto es o no un error con Alfresco, sin ver los datos que intenta persistir. ¿Qué versión de Alfresco estás usando? Encontré este error en el sistema de seguimiento de problemas de Alfresco. Específicamente, esto es con la comunidad 2.1, y parece sugerir que hay problemas con la codificación que no sea UTF-8, por lo que puede o no estar relacionado con su problema.

Una cosa que podría hacer para depurar este problema es escribir una pequeña prueba utilizando la API Java (del lado del servidor) incorporada de Alfresco, intentando conservar los mismos datos y ver si aún recibe un error (probablemente no sea SAXParseException si lo hace). Si no recibe un error, sabe que probablemente haya un error en la API del servicio web de Alfresco (que desafortunadamente no es tan compatible como sus API Java o REST incrustadas), y es posible que desee agregar un comentario sobre el informe de error que mencioné anteriormente, o presente el suyo. Si aún recibe un error con la API incorporada, entonces podría ser su código o el de ellos ese es el problema.

¡Espero que al menos haya sido un poco útil!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top