使用XSD JAVA的XML

ume*_*esh 4 java xml validation xsd

我已经被分配了一项工作来针对XSD验证XML,如果通过的everthing将解析XML,以便可以将其导入我的系统.

我的Qyestion是针对XSD验证XML的最佳方法,也是将XML解析为域对象的最佳API.

寻找有价值的建议

bdo*_*han 9

第1部分 - 验证XML

您可以使用javax.xml.validation API.

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);
Run Code Online (Sandbox Code Playgroud)

第2部分 - OXM

关于问题的第二部分,将XML解析为域对象的最佳API是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();
Run Code Online (Sandbox Code Playgroud)