javajaxb检查xml对于声明的xsd是否有效
在调用解组器的解组方法之前,我需要知道xml是否有效
现在我这样做:
JAXBContext jaxbContext = JAXBContext.newInstance("package");
final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
final SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
final File xsdFile = new File("pathtoxsd/file.xsd");
final Schema schema = schemaFactory.newSchema(xsdFile);
unmarshaller.setSchema(schema);
unmarshaller.setEventHandler(new ValidationEventHandler() {
@Override
public boolean handleEvent(ValidationEvent arg0)
{
return false;
}
});
final File xmlFile = new File("pathtoxml/fileName.xml");
final Object unmarshalled = unmarshaller.unmarshal(xmlFile);
但我不想被迫知道xsd在哪里。xsd路径应仅由其内部的xml声明,封送拆收器应遵循xml声明的路径
# 1 楼答案
您可以执行以下操作:
schemaLocation
属性(您可能还需要处理noNamespaceSchemaLocation
属性)李>Schema
李>Unmarshaller
上设置Schema
李>