Question

J'utilise Java pour accéder au serveur de contenu Alfresco via son API de service Web afin d'y importer du contenu. Certaines propriétés de NamedValue doivent être définies sur le contenu de la chaîne UTF-8 (cyrillique). Je continue à avoir l’exception de l’analyseur Sax:

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

Le code ressemble à ceci:

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"
} 

Quelqu'un sait-il comment résoudre ce problème?

Était-ce utile?

La solution

Le problème était que la bibliothèque alfresco-web-service-client.jar que j’utilisais était issue de la distribution 2.9B (je rencontre le serveur de contenu de la communauté 2.9B) et des bibliothèques de dépendance bcprov-jdk15-136.jar et xmlsec-1.4. 0.jar n'étaient pas adéquats (ils sont restés âgés de 2,1 dist). J'aurais dû utiliser bcprov-jdk15-137.jar et xmlsec-1.4.1.jar, qui sont déployés avec la distribution 2.9B.

Autres conseils

Le moyen le plus simple de contourner ce problème consiste à échapper à cyrillicString, par exemple avec escapeXml de Jakarta Commons, ou en convertissant la chaîne entière en entités XML si cela ne suffit pas. Mais à long terme, Alfresco devrait être corrigé, donc ouvrir un ticket peut également être un bon choix.

Il est un peu difficile de dire s'il s'agit d'un bogue avec Alfresco, sans voir les données que vous essayez de conserver. Quelle version d'Alfresco utilisez-vous? J'ai trouvé ce bug dans le système de suivi des problèmes d'Alfresco. Plus précisément, il s’agit de la communauté 2.1, et il semble suggérer que l’encodage pose des problèmes autres que le codage UTF-8; il est donc possible que ce problème soit lié à votre problème.

Une des choses que vous pouvez faire pour résoudre ce problème consiste à écrire un petit test à l'aide de l'API Java intégrée (côté serveur) d'Alfresco, en essayant de conserver les mêmes données et de voir si vous obtenez toujours une erreur (cela ne serait probablement pas le cas). SAXParseException si vous le faites). Si vous n'obtenez pas d'erreur, vous savez qu'il existe probablement un bogue dans l'API de service Web d'Alfresco (qui, malheureusement, n'est pas aussi bien prise en charge que leurs API Java ou REST intégrées) et vous pouvez ajouter un commentaire à ce sujet. le rapport de bogue que j'ai mentionné plus tôt ou le vôtre. Si vous continuez à avoir une erreur avec l'API intégrée, alors le problème peut être soit votre code, soit le leur.

J'espère que c'était au moins un peu utile!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top