寻找一些确认,以下是针对模式验证XML字符串的最有效的Java解决方案。任何其他更有效的内存或性能方式?
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;
}
答案 0 :(得分:1)
几乎没有。您可以通过重用SchemaFactory
(注意:不是线程安全的)和Schema
(不可变的,线程安全的)来获得一些小的改进,但它几乎就是这样。如果你从String XML
切换到更流畅的东西并使用StAX,你也可以获得一些内存改进。