Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to parse XML against XSD,DTD, etc.. locally (no internet connection) ?

843834Aug 25 2010 — edited Sep 1 2010
i've searched on how to parse xml against xsd,dtd,etc.. without the needs of internet connection..
but unfortunately, only the xsd file can be set locally and still there needs the internet connection for the other features, properties.

XML: GML file input from gui
XSD: input from gui

javax.xml
package demo;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.xml.sax.SAXException;

public class Sample1WithJavaxXML {

	public static void main(String[] args) {
		URL schemaFile = null;
		try {
			//schemaFile = new URL("http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd");
			File file0 = new File("AppSchema-C01-v1_0.xsd");
			schemaFile = new URL(file0.toURI().toString());
		} catch (MalformedURLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		//Source xmlFile = new StreamSource(new File("web.xml"));
		Source xmlFile = new StreamSource(new File("C01.xml"));
		SchemaFactory schemaFactory = SchemaFactory
		    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
		
		//File file1 = new File("XMLSchema.dtd");
		//SchemaFactory schemaFactory = SchemaFactory
			//.newInstance("javax.xml.validation.SchemaFactory:XMLSchema.dtd");
		
		Schema schema = null;
		
		try {
			schema = schemaFactory.newSchema(schemaFile);
		} catch (SAXException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		Validator validator = schema.newValidator();
		try {
		  validator.validate(xmlFile);
		  System.out.println(xmlFile.getSystemId() + " is valid");
		} catch (SAXException e) {
		  System.out.println(xmlFile.getSystemId() + " is NOT valid");
		  System.out.println("Reason: " + e.getLocalizedMessage());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
Xerces
package demo;

import java.io.File;
import java.util.Date;

import org.apache.xerces.parsers.DOMParser;

public class SchemaTest {

	private String xmlFile = "";
	private String xsdFile = "";

	public SchemaTest(String xmlFile, String xsdFile) {
		this.xmlFile = xmlFile;
		this.xsdFile = xsdFile;
	}

	public static void main (String args[]) {
		File file0 = new File("AppSchema-C01-v1_0.xsd");
		String xsd = file0.toURI().toString();
		SchemaTest testXml = new SchemaTest("C01.xml",xsd);
		testXml.process();

	}

	public void process() {

		File docFile = new File(xmlFile);
		DOMParser parser = new DOMParser();
		
		try {
			
			parser.setFeature("http://xml.org/sax/features/validation", true);
			parser.setFeature("http://apache.org/xml/features/validation/schema", true);
			parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
					xsdFile);
			
			ErrorChecker errors = new ErrorChecker();
			parser.setErrorHandler(errors);
			System.out.println(new Date().toString() + " START");
			parser.parse(docFile.toString());
		} catch (Exception e) {
			System.out.print("Problem parsing the file.");
			System.out.println("Error: " + e);
			System.out.println(new Date().toString() + " ERROR");
			return;
		}
		
		System.out.println(new Date().toString() + " END");
	}
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 29 2010
Added on Aug 25 2010
12 comments
1,199 views