1

私が現在取り組んでいる Web アプリケーションは、サーバーに保存されている xsd に対して、ユーザーが指定した xml ファイルを検証します。問題は、xml が検証に失敗した場合、エラー メッセージがロシア語で表示されることです。パーサーが動作しています - エラーメッセージが表示されますが、英語のみです

    String parserClass = "org.apache.xerces.parsers.SAXParser";
    String validationFeature = "http://xml.org/sax/features/validation";
    String schemaFeature = "http://apache.org/xml/features/validation/schema";
    XMLReader reader = null;
    reader = XMLReaderFactory.createXMLReader(parserClass);

    reader.setFeature(validationFeature,true);
    reader.setFeature(schemaFeature,true);

    BatchContentHandler contentHandler = new BatchContentHandler(reader);
    reader.setContentHandler(contentHandler);

    BatchErrorHandler errorHandler = new BatchErrorHandler(reader);
    reader.setErrorHandler(errorHandler);

    reader.setFeature("http://apache.org/xml/features/continue-after-fatal-error", true);
    reader.parse(new InputSource(new ByteArrayInputStream(streamedXML)));

問題なく動作します。エラー メッセージは英語です。この投稿Xerces 2.11.0 (Java) の Locale specific messagesと、この投稿https://www.java.net//node/699069を読んで、これらの行を追加しました

Locale l = new Locale("ru", "RU");
reader.setProperty("http://apache.org/xml/properties/locale", l);

XMLSchemaMessages_RU.properties ファイルも jar に追加しました。これで、NULL ポインター例外が発生します。アイデアやヒントはありますか?前もって感謝します!

4

1 に答える 1

1

私はここでこれについて見つけましたhttp://apache.org/xml/properties/locale

  • 説明:エラーと警告の報告に使用するロケール。このプロパティの値が null の場合、java.util.Locale.getDefault() から返されたプラットフォームのデフォルトが使用されます。
  • タイプ: java.util.Locale
  • アクセス: 読み書き
  • 以降: Xerces-J 2.10.0
  • 注: 指定されたロケールで使用できるメッセージがない場合は、プラットフォームのデフォルトが使用されます。プラットフォームのデフォルトが英語ではなく、このロケールで利用可能なメッセージがない場合、メッセージは英語で報告されます

また、ロシア語のオブジェクトを作成するために、このコードが提供されている例をここで見つけました。Locale

Locale dLocale = new Locale.Builder().setLanguage("ru").setScript("Cyrl").build();

これが役に立つかどうかはわかりません。試してみて、フィードバックをお寄せください。

于 2013-10-16T10:44:14.637 に答える