私はこの質問への同様の問題持っている:私は、XMLファイルを解析し、例えば、いくつかの言語でパーサーエラー(SAXParseExceptionの)のリストを取得しようとしているSAXParseException localizedXMLファイルの解析中にSAXParseExceptionを国際化する方法はありますか?
を:
XmlImporter.importFile(params, "en")
必要があります英語でエラーのリストを返します。XmlImporter.importFile(params, "fr")
はフランス語でエラーのリストを返すべきです、XmlImporter.importFile(params, "pl")
はポーランド語でエラーのリストを返すべきです。
XmlImporter.importFile(params, "...")
のすべての通話が異なるロケールである可能性があります。
これは私の検証メソッドです:私はexception.getLocalizedMessageに取得するために何とか/どこかjava.util.Localeの/文字列を渡す必要があることを、前提とし
public class XmlErrorHandler implements ErrorHandler {
private List<String> errorsList = new ArrayList<>();
public List<String> getErrorsList() {
return errorsList;
}
@Override
public void warning(SAXParseException exception) throws SAXException {
errorsList.add(prepareExceptionDescription(exception));
}
@Override
public void error(SAXParseException exception) throws SAXException {
errorsList.add(prepareExceptionDescription(exception));
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
errorsList.add(prepareExceptionDescription(exception));
}
private String prepareExceptionDescription(SAXParseException exception) {
return "Error: " +
"colNumber: " + exception.getColumnNumber() +
" line number: " + exception.getLineNumber() +
" message: " + exception.getLocalizedMessage();
}
}
:
private void validate(String xmlFilePath, String schemaFilePath) throws Exception {
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File(schemaFilePath));
Validator validator = schema.newValidator();
XmlErrorHandler errorHandler = new XmlErrorHandler();
validator.setErrorHandler(errorHandler);
try (InputStream stream = new FileInputStream(new File(xmlFilePath))) {
validator.validate(new StreamSource(stream));
}
がXmlErrorHandler ()enのカスタムメッセージ(en、frまたはpl)? (JavaオブジェクトにXMLファイルを変換するために使用されるJavaのパーサ)デフォルトのXercesによって