2016-12-06 2 views
0

Ищете подтверждение того, что нижеследующее является наиболее эффективным решением Java для проверки XML-строки в отношении схемы. Любые другие способы, которые являются более эффективной памятью или эффективностью?Подтверждение XML против XSD

private boolean isXMLValid(String XSDPath, String XML) { 
     final SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     try { 
      final Schema schema = factory.newSchema(new File(XSDPath)); 
      final Validator validator = schema.newValidator(); 
      validator.validate(new StreamSource(new ByteArrayInputStream(XML.getBytes()))); 
     } catch (IOException | SAXException e) { 
      System.out.println("Exception: " + e.getMessage()); 
      return false; 
     } 
     return true; 
    } 

ответ

1

Вряд ли. Вы можете получить некоторые незначительные улучшения за счет повторного использования SchemaFactory (внимание: не потокобезопасное) и Schema (неизменяемое, потокобезопасное), но это почти все. Если вы переключаетесь с String XML на что-то более потоковое и используете StAX, вы также можете получить некоторые улучшения памяти.

+0

только в каком-то контексте эта проверка сидит за REST API, который будет вызываться другим приложением для проверки их XML, поэтому я не уверен, могу ли я получить более потоковое, но дайте мне знать, если у вас есть какие-либо идеи. Благодаря! – c12

+1

'ServletRequest' имеет метод' 'getInputStream' '(http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getInputStream()). – lexicore

Смежные вопросы