[英]How to internationalization SAXParseException while parsing XML file?
我遇到了一个与此问题类似的问题: SAXParseException已本地化
我正在尝试解析XML文件并获取几种语言的解析器错误列表(SAXParseException):
XmlImporter.importFile(params, "en")
应该返回英语错误列表, XmlImporter.importFile(params, "fr")
应该返回法语错误列表, XmlImporter.importFile(params, "pl")
应该返回波兰语错误列表。
XmlImporter.importFile(params, "...")
每个调用都可以使用不同的语言环境。
这是我的验证方法:
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:
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();
}
}
我假设,我需要以某种方式/在某处传递java.util.Locale / String来获取exception.getLocalizedMessage()自定义消息(以en,fr或pl为准)?
默认情况下,Xerces(用于将XML文件转换为Java对象的Java解析器)可以为给定语言提供国际化:
以其他语言提供国际化:
从Apache Xerces获取XMLSchemaMessages.properties
文件,并将文件重命名为新文件XMLSchemaMessages_LANG.properties
,其中LANG需要更改为新语言。
将文件消息更新为新语言,并将此文件放置在类路径中(您可以将此文件添加到src\\main\\resources\\com\\sun\\org\\apache\\xerces\\internal\\impl\\msg
)
异常将以新语言显示(消息将从XMLSchemaMessages_LANG.properties
文件中获取)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.