Java Schemaベースxmlの検証
JavaはSchemaに基づいてxmlを検証していますが、比較的簡単なのでコメントを書いていません.添付ソースダウンロード(ソース、xsd、xmlファイルを含む).
package com.szl.xml;
import java.io.File;
import java.io.IOException;
import javax.xml.XMLConstants;
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.ErrorHandler;
import org.xml.sax.SAXException;
import com.sun.org.apache.xml.internal.utils.DefaultErrorHandler;
public class XmlValidator
{
private String xsdFilePath;
public XmlValidator(String xsdFilePath)
{
this.xsdFilePath = xsdFilePath;
}
public String validata(String xmlFilePath, ErrorHandler errorHandler)
{
String msg = null;
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
try
{
Schema schema = factory.newSchema(new File(xsdFilePath));
Validator validator = schema.newValidator();
validator.setErrorHandler(errorHandler);
validator.validate(new StreamSource(new File(xmlFilePath)));
}
catch (SAXException e)
{
msg = e.getMessage();
e.printStackTrace();
}
catch (IOException e)
{
msg = e.getMessage();
e.printStackTrace();
}
return msg;
}
public static void main(String[] args)
{
String xmlFilePath = "file/test.xml";
String xsdFilePath = "file/school.xsd";
XmlValidator my = new XmlValidator(xsdFilePath);
String msg = my.validata(xmlFilePath, new DefaultErrorHandler());
System.out.println(msg == null);
}
}