JAVA中使用Schema校验XML时间:2025-03-11 15:34:38源程序来源于网络,感谢程序的原作者。源程序比较不容易看懂,如没有引用相关的包,没有说明相关包如何获取,相关的理论依据是什么,这里我补充完整。完整源程序如下: /* 1、需要四个JAR包的支持:isorelax、dom4j、relaxngDatatype、xsdlib,都可以在sourceforge上面下载,如果不知道如何查找, * 参看:/fenglibing/archive/2009/05/04/ * 2、该程序实现的理论支论,参见文章:/fenglibing/archive/2009/05/05/ * 3、如果想错误提示使用中文,可以使用()来设置默认的Locale,同时在这个类的同一个包中增加Message_zh_CN.properties文件, * 这个文件将中文变成unicode. 可以使用jdk下的工具native2ascii来实现.native2ascii的使用介绍,参见如下文章: * /fenglibing/archive/2009/05/04/ */ import ; import org.iso_relax.; import org.iso_relax.; import org.iso_relax.; import org.iso_relax.; import org.; import org.; import org.; import ; import ; public class SchemaValidation { public static void main(String[] args) { validate(); } public static void validate() { try { SchemaValidation demo = new SchemaValidation(); // Give the xml and schema name InputStream xmlString = ().getResourceAsStream( ""); InputStream schemaStr = ().getResourceAsStream( ""); SAXReader reader = createSAXReader(schemaStr); ("XSD parse successfully !"); Document document = (xmlString); ("Successfully validation .. . "); } catch (DocumentException e) { ("Exception occurred: " + e); Throwable nestedException = (); if (nestedException != null) { ("NestedException: " + nestedException); (); } else { (); } } catch (Throwable t) { ("Exception occurred: " + t); (); } } /** Registers the Verifier with the SAXReader */ protected static SAXReader createSAXReader(InputStream schemaURI) throws Exception { ("Loaded schema document: " + schemaURI); //四步必须,一步可选:创建校验工厂、编码Schema、生成校验器、[设置错误处理]、XML文档校验 //第一步:创建校验工厂,可选择不同的校验工厂 // use autodetection of schemas //查看JARV的详细信息:/JARV/,进入其userGuide //该步为创建校验工厂实例,如果需要换成其它的校验器,将()换成其它即可,如使用 Swift RELAX Verifier: //VerifierFactory factory = new (); VerifierFactory factory = new (); //第二步:编译成Schema,支持源为URL、InputStream、File、InputSource等 Schema schema = (schemaURI); //第三步:生成校验器 Verifier verifier = (); //第四步:设置自己的错误处理,如果不设置就是默认的错误处理 (new ErrorHandler() { public void error(SAXParseException e) { ("ERROR: " + e); } public void fatalError(SAXParseException e) { ("FATAL: " + e); } public void warning(SAXParseException e) { ("WARNING: " + e); } }); //第五步:XML文档校验 VerifierFilter filter = (); //默认SAXReader的校验是关闭的,采用setXMLFilter方法,就显示设置了过滤器,后面生成的对象就会做校验 SAXReader reader = new SAXReader(); (filter); return reader; } } 本文出自:冯立彬的博客