Я использую Java для доступа к серверу контента Alfresco через API веб-службы для импорта в него некоторого контента. Содержимое должно иметь некоторые свойства NamedValue, для которых задана строка UTF-8 (кириллица). Я продолжаю получать исключение парсера Sax:
org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1b) was found in the element content of the document.
Код выглядит примерно так:
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"
}
кто-нибудь знает, как решить эту проблему?




Самый простой способ обойти это, я думаю, избежать cyrillicString, например, с помощью escapeXml из Jakarta Commons, или путем преобразования всей строки в объекты XML, если этого недостаточно. Но в конечном итоге Alfresco следует отремонтировать, поэтому открытие билета тоже может быть хорошим выбором.
Немного сложно сказать, является ли это ошибкой в Alfresco, не видя данных, которые вы пытаетесь сохранить. Какую версию Alfresco вы используете? Я обнаружил эту ошибку в системе отслеживания проблем Alfresco. В частности, это относится к сообществу 2.1, и, похоже, есть проблемы с кодировкой, отличной от UTF-8, поэтому это может быть связано или не быть связано с вашей проблемой.
Одна вещь, которую вы могли бы сделать для отладки этой проблемы, - это написать небольшой тест с использованием встроенного Java (серверного) API Alfresco, пытаясь сохранить те же данные, и посмотреть, будет ли вы по-прежнему получать ошибку (это, вероятно, не будет SAXParseException, если вы делать). Если вы не получаете сообщение об ошибке, вы знаете, что, вероятно, есть ошибка в API веб-службы Alfresco (который, к сожалению, не так хорошо поддерживается, как их встроенные API Java или REST), и вы можете добавить комментарий к отчет об ошибке, о котором я упоминал ранее, или создайте свой собственный. Если вы по-прежнему получаете сообщение об ошибке со встроенным API, то проблема может быть в вашем или их коде.
Надеюсь, это было хоть немного полезно!
Проблема заключалась в том, что библиотека alfresco-web-service-client.jar, которую я использовал, была из дистрибутива 2.9B (я использую сервер контента сообщества 2.9B), а библиотеки зависимостей bcprov-jdk15-136.jar и xmlsec-1.4.0.jar не подходили (остались устаревшими с версии 2.1). Я должен был использовать bcprov-jdk15-137.jar и xmlsec-1.4.1.jar, которые развернуты вместе с дистрибутивом 2.9B.