xsd校验xml字符串时,xsd文件中配置的date,dateTime类型字段多线程高并发时报错
java使用xsd校验xml字符串时,xsd文件中配置的date,dateTime类型字段多线程高并发时报错:
cvc-type.3.1.3: The value '1990-10-01' of element 'birthday' is not valid.
The value '2050-12-31T00:00:00' of element 'closedate' is not valid.
请问这个怎么解决啊?
xsd文件中的配置:
<xsd:element name="birthday" type="xsd:date" minOccurs="0"/>
<xsd:element name="closedate" type="xsd:dateTime" minOccurs ="0"/>
校验代码:
public boolean validate(String schema, String xml) {
InputStream is = null;
try {
log.info(xml);
SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);
// 指定约束方式为XML schema
builder.setFeature("http://apache.org/xml/features/validation/schema", true);
// 导入schema文件
builder.setProperty(
"http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
schema);
is = getSource(xml);
builder.build(is);
} catch (Exception e) {
log.error("验证失败:", e);
String info = "fail:" + e.getMessage();
ds.addErrMsg("[20]数据校验不通过:" + info);
return false;
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
log.error("", e);
}
}
}
return true;
}