Dom_SchemaValidator.java
/*
* Copyright@ 2011 www.egtry.com
*/
package egtry.xml;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringReader;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXParseException;
public class Dom_SchemaValidator {
public static void main(String[] args) throws Exception {
//step 1. create DocumentBuilder
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder domBuilder=factory.newDocumentBuilder();
//step 2. build up xml document from InputStream
String xml="<root/>";
InputStream in=new ByteArrayInputStream(xml.getBytes());
Document doc=domBuilder.parse(in);
//step 3. validate again a schema
SchemaFactory schemaFactory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
String schemaText="<?xml version=\"1.0\"?>\n"
+"<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n"
+"<xs:element name=\"root\"/>\n"
+"</xs:schema>";
Source schemaSource=new StreamSource(new StringReader(schemaText));
Schema schema=schemaFactory.newSchema(schemaSource);
Validator validator=schema.newValidator();
try {
validator.validate(new DOMSource(doc));
System.out.println("XML Document validated\n");
} catch (SAXParseException e){
System.out.println(e+"Validation Error: "+e.getMessage());
return;
}
System.out.println("Schema: \n"+schemaText);
System.out.println("\nXML data:\n"+xml);
}
}