| Refresh | Home EGTry.com

parse xml using DOM api validated by xml schema


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);
	  

  }
  
 
}



Output

XML Document validated

Schema: 
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root"/>
</xs:schema>

XML data:
<root/>