Java,Alfresco Web服务API和Unicode NamedValues

java web-services unicode alfresco

3423 观看

3回复

31 作者的声誉

我正在使用Java通过它的Web服务API访问Alfresco内容服务器,以便将一些内容导入其中。内容应该有一些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"
} 

有谁知道如何解决这个问题?

作者: Aleksandar Marinkovic 的来源 发布者: 2008 年 10 月 10 日

回应 (3)


0

1893 作者的声誉

解决它的最简单方法是我想逃避cyrillicString,例如使用来自Jakarta Commons的escapeXml,或者将整个字符串转换为XML实体(如果它还不够)。但从长远来看,Alfresco应该是固定的,所以打开一张票可能也是一个不错的选择。

作者: Damien B 发布者: 12.10.2008 11:37

0

5533 作者的声誉

很难判断这是否是Alfresco的错误,而没有看到你试图坚持的数据。您使用的是哪个版本的Alfresco?我在Alfresco的问题跟踪系统中发现了这个错误。具体来说,这是2.1社区,似乎表明UTF-8以外的编码存在问题,所以它可能与你的问题有关,也可能没有。

调试此问题可以做的一件事是使用Alfresco的嵌入式Java(服务器端)API编写一个小测试,试图保留相同的数据,并查看是否仍然出现错误(如果你可能不会出现SAXParseException做)。如果您没有收到错误,您就知道Alfresco的Web服务API中可能存在一个错误(遗憾的是,它的嵌入式Java或REST API支持得不是很好),您可能希望添加注释我之前提到的错误报告,或者提交自己的错误报告。如果您仍然遇到嵌入式API的错误,那么它仍然可能是您的代码或他们的问题。

希望至少有点帮助!

作者: Julie 发布者: 13.10.2008 04:13

2

31 作者的声誉

决定

问题是,alfresco-web-service-client.jar我使用的库是从2.9B分布(我打2.9B社区内容服务器),和依赖库bcprov-jdk15-136.jarxmlsec-1.4.0.jar不够充分(保持2.1 verison岁)。我应该使用bcprov-jdk15-137.jarxmlsec-1.4.1.jar部署2.9B分配。

作者: Aleksandar Marinkovic 发布者: 13.10.2008 09:18
32x32