我使用以下类执行 XSD XML 验证:
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
问题是验证器返回的 XSD 错误消息始终是英文的。是否可以使用 JAXP API 调用区域感知验证?
我使用以下类执行 XSD XML 验证:
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
问题是验证器返回的 XSD 错误消息始终是英文的。是否可以使用 JAXP API 调用区域感知验证?
JAXP 是一个 API;Apache Xerces
提供本地化感知消息取决于实际的实现(例如, )。
但是,通常,系统级库和实现(例如 JAXP 和 Xerces)将提供基于系统默认语言环境(无论从表达式返回什么)本地化的消息java.util.Locale.getDefault()
;这又是特定于操作系统的。
Regional Settings
例如,在 Microsoft Windows 上,您可以使用该窗口更改系统的默认区域设置。
如果需要,您可以通过指定user.language
和user.region
系统属性覆盖 JVM 使用的“默认语言环境”(例如,-Duser.language=fr
并使-Duser.region=CA
JVM 产生“加拿大法语”作为默认语言环境。最终,此设置将到达 JAXP 的代码. 如果 Xerces 提供加拿大法语资源包,则将发出加拿大法语消息。
它应该以日语打印错误消息,前提是它存在 java.xml\com\sun\org\apache\xerces\internal\impl\msg\XMLSchemaMessages_ja.properties 中的资源文件但我没有找到如何添加更多语言。
Validator validator = schema.newValidator();
validator.setErrorHandler(errorHandler);
validator.setProperty("http://apache.org/xml/properties/locale", Locale.forLanguageTag("ja"));
希望能帮助到你。
显然没有办法实现我想要的。