performing xml validation against xsd

volcano picture volcano · Mar 18, 2011 · Viewed 10.8k times · Source

I have XML as a string and an XSD as a file, and I need to validate the XML with the XSD. How can I do this?

Answer

Steve Bennett picture Steve Bennett · Mar 18, 2011

You can use javax.xml.validation API to do this.

public boolean validate(String inputXml, String schemaLocation)
  throws SAXException, IOException {
  // build the schema
  SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
  File schemaFile = new File(schemaLocation);
  Schema schema = factory.newSchema(schemaFile);
  Validator validator = schema.newValidator();

  // create a source from a string
  Source source = new StreamSource(new StringReader(inputXml));

  // check input
  boolean isValid = true;
  try  {

    validator.validate(source);
  } 
  catch (SAXException e) {

    System.err.println("Not valid");
    isValid = false;
  }

  return isValid;
}