Часть 1 - проверка XML
Для этого вы можете использовать API javax.xml.validation .
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
URL schemaURL = // The URL to your XML Schema;
Schema schema = sf.newSchema(schemaURL);
Validator validator = schema.newValidator();
validator.validate(xml);
Часть 2 - ОХМ
Что касается второй части вашего вопроса, то лучшим API для анализа XML в объекте домена является JAXB. JAXB - это спецификация с несколькими реализациями. Я возглавляю реализацию MOXy JAXB , которая содержит полезные расширения, такие как отображение на основе XPath .
Вы всегда можете выполнить проверку при преобразовании XML в объекты:
JAXBContext jc = JAXBContext.newInstance(Customer.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
URL schemaURL = // The URL to your XML Schema;
Schema schema = sf.newSchema(schemaURL);
unmarshaller.setSchema(schema);
JAXBElement<Customer> element = (JAXBElement<Customer>) unmarshaller.unmarshal(xml);
Customer customer = elemnt.getValue();