2015-09-16 147 views
0

我仍在調查這些選項,但我想徵詢一些建議。REST Web服務中的Spring XML解析

我有一個需求,我需要構建一個RESTful Web服務,它需要一個XML文件,根據XSD對其進行驗證,然後將數據存儲到Java對象中(這些對象最終還會放入Oracle數據庫)。

我傾向於使用Spring MVC進行REST風格的Web服務。我只通過一些簡單的示例來學習東西,但我有一個非常基本的RESTful WS工作 - 能夠執行採用XML輸入的CRUD操作。

我不確定和仍在研究的是如何在Spring中驗證XML與XSD?其次,如何在Spring中解析它,將XML數據放入Java對象中。

任何人都可以指向正確的方向嗎?

謝謝! Chris

回答

0

假設webservice已啓動並正在運行,您可以使用助手類來驗證輸入XML字符串,並使用另一個類來使用JAXB對其進行解組。

驗證:

public static boolean validator(String xml) { 
    try { 
     StringReader reader = new StringReader(xml); 
     URL xsdResource = ValidarXML.class.getClassLoader().getResource("myPath/myXSD.xsd"); 
     SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     Schema schema = factory.newSchema(xsdResource); 
     Validator validator = schema.newValidator(); 
     validator.validate(new StreamSource(reader)); 
    } catch (SAXException e) { 
     logger.error(e.getMessage(), e); 
     return false; 
    } 
    return true; 
} 

解組

JAXBContext jc = JAXBContext.newInstance("foo.bar.MyClass"); 
Unmarshaller u = jc.createUnmarshaller(); 
MyClass clazz = u.unmarshal(new StreamSource(new StringReader(xml)));