2

Java を使用して Alfresco コンテンツ サーバーにアクセスし、その Web サービス 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"
} 

この問題を解決する方法を知っている人はいますか?

4

3 に答える 3

2

問題は、alfresco-web-service-client.jar私が使用したライブラリが 2.9B ディストリビューション (私は 2.9B コミュニティ コンテンツ サーバーにヒットしています) のものであり、依存ライブラリが適切bcprov-jdk15-136.jarxmlsec-1.4.0.jarはなかったことです (2.1 バージョンから古いままでした)。2.9B ディストリビューションと共に展開されているbcprov-jdk15-137.jarandを使用する必要がありました。xmlsec-1.4.1.jar

于 2008-10-13T09:18:36.700 に答える
0

永続化しようとしているデータを見ずに、これがAlfrescoのバグであるかどうかを判断するのは少し難しいです。どのバージョンのAlfrescoを使用していますか?このバグは、Alfrescoの問題追跡システムで見つかりました。具体的には、これは2.1コミュニティの場合であり、UTF-8以外のエンコーディングに問題があることを示唆しているようです。したがって、問題に関連している場合と関連していない場合があります。

この問題をデバッグするためにできることの1つは、Alfrescoの組み込みJava(サーバー側)APIを使用して小さなテストを作成し、同じデータを永続化して、それでもエラーが発生するかどうかを確認することです(行う)。エラーが発生しない場合は、AlfrescoのWebサービスAPI(残念ながら、組み込みのJavaまたはREST APIほどサポートされていない)にバグがある可能性があることを知っているので、コメントを追加することをお勧めします。先に述べたバグレポート、または自分で提出してください。それでも組み込みAPIでエラーが発生する場合は、コードまたはそのコードのいずれかが問題である可能性があります。

それが少なくとも少し役に立ったことを願っています!

于 2008-10-13T04:13:53.727 に答える
0

これを回避する最も簡単な方法は、たとえば Jakarta Commons のescapeXmlを使用して cyrillicString をエスケープすること、または十分でない場合は文字列全体を XML エンティティに変換することだと思います。しかし、長期的には、Alfresco は修正される必要があるため、チケットを開くことも良い選択かもしれません。

于 2008-10-12T23:37:54.797 に答える