【发布时间】:2015-07-09 16:38:52
【问题描述】:
在使用 JAXB 对 XSD 文件进行 XML 验证期间,如果 XML 文件无效,我会收到 JAXBExceptions。我通过调用event.getMessage() 得到异常消息。结果字符串是德语。
我正在使用 JAXB 2.2。在德语系统上使用 java 8。
什么决定了 JAXB 异常消息的语言以及如何将其更改为英文?
代码如下:
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
try {
Schema schema = schemaFactory.newSchema();
JAXBContext jaxbContext = JAXBContext.newInstance("myPackage");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setEventHandler(new XMLValidationEventHandler());
unmarshaller.setSchema(schema);
myClass = (myClass) unmarshaller.unmarshal(new File("myFile.xml"));
} catch (SAXException saxE) {
System.out.println("SAX-Exception during creation of Schema object!");
saxE.printStackTrace();
} catch (JAXBException e) {}
这是事件处理程序:
public class XMLValidationEventHandler implements ValidationEventHandler {
@Override
public boolean handleEvent(ValidationEvent event) {
System.out.println("XML validation failure in line "
+ event.getLocator().getLineNumber()
+ ", column " + event.getLocator().getColumnNumber()
+ ": " + event.getMessage());
return true;
}
这是事件处理程序的输出示例:
第 8 行第 48 列中的 XML 验证失败:cvc-maxInclusive-valid: Wert "10000" ist nicht Facet-gültig in Bezug auf maxInclusive "8.0E3" für Typ "Type"。 第 17 行第 64 列中的 XML 验证失败:Ungültiger Wert 250 für Feld Day。 第 17 行第 64 列中的 XML 验证失败:cvc-datatype-valid.1.2.1: "2014-02-2501:00:00Z" ist kein gültiger Wert für "dateTime"。
【问题讨论】:
-
请发布用于获取消息的代码示例,并尽可能提供准确的输出。
标签: java xml jaxb internationalization jaxb2