本文共 7046 字,大约阅读时间需要 23 分钟。
转自 http://blog.csdn.net/fenglibing/archive/2009/05/05/4150642.aspx
源程序来源于网络,感谢程序的原作者。源程序比较不容易看懂,如没有引用相关的包,没有说明相关包如何获取,相关的理论依据是什么,这里我补充完整。完整源程序如下:
-
-
-
-
-
-
-
- import java.io.InputStream;
-
- import org.iso_relax.verifier.Schema;
- import org.iso_relax.verifier.Verifier;
- import org.iso_relax.verifier.VerifierFactory;
- import org.iso_relax.verifier.VerifierFilter;
-
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.io.SAXReader;
- import org.xml.sax.ErrorHandler;
- import org.xml.sax.SAXParseException;
-
- public class SchemaValidation {
-
- public static void main(String[] args) {
- validate();
- }
-
- public static void validate() {
- try {
- SchemaValidation demo = new SchemaValidation();
-
- InputStream xmlString = demo.getClass().getResourceAsStream(
- "GBAInit.xml" );
- InputStream schemaStr = demo.getClass().getResourceAsStream(
- "GBAInitSchema.xsd" );
- SAXReader reader = createSAXReader(schemaStr);
- System.out.println("XSD parse successfully !" );
-
- Document document = reader.read(xmlString);
- System.out.println("Successfully validation .. . " );
- } catch (DocumentException e) {
- System.out.println("Exception occurred: " + e);
- Throwable nestedException = e.getNestedException();
- if (nestedException != null ) {
- System.out.println("NestedException: " + nestedException);
- nestedException.printStackTrace();
- } else {
- e.printStackTrace();
- }
- } catch (Throwable t) {
- System.out.println("Exception occurred: " + t);
- t.printStackTrace();
- }
- }
-
-
- protected static SAXReader createSAXReader(InputStream schemaURI)
- throws Exception {
-
- System.out.println("Loaded schema document: " + schemaURI);
-
-
-
-
-
-
- VerifierFactory factory = new com.sun.msv.verifier.jarv.TheFactoryImpl();
-
- Schema schema = factory.compileSchema(schemaURI);
-
- Verifier verifier = schema.newVerifier();
-
- verifier.setErrorHandler(new ErrorHandler() {
- public void error(SAXParseException e) {
- System.out.println("ERROR: " + e);
- }
- public void fatalError(SAXParseException e) {
- System.out.println("FATAL: " + e);
- }
- public void warning(SAXParseException e) {
- System.out.println("WARNING: " + e);
- }
- });
-
- VerifierFilter filter = verifier.getVerifierFilter();
-
- SAXReader reader = new SAXReader();
- reader.setXMLFilter(filter);
- return reader;
- }
- }
<script type="text/javascript"> var CurrentEntryId = '4150642'; </script> <script src="http://hi.images.csdn.net/js/blog/feedback.js?v=2009060916" type="text/javascript"></script>
jeff2033333 发表于2009年5月5日 12:25:18 IP: - 巧 了,我也是这两天被那个源程序搞得比较头大,补充几点吧:1. sourceforge上已经没有这些包了,我查不到,即使确实还有也至少说明,这个project已经不再是sourceforge费心维护的对象,版 本问题成疑。2. findjar网站上的jar包虽然多但也很杂,仍旧是版本问题无从保障。我从各方凑来这些jar包好几套,全都是缺胳膊少腿的。3. 稳定可用的包应该去sun的站点去下载,因为MVS这个东西本来就是sun的项目。sun在zip包里提供了好几个相关jar包,比如 xcercesImpl等,可能跟你原有的库冲突,个人意见,最好用它提供的,因为人家依赖包之间的兼容性肯定能保障,下载地 址:https://msv.dev.java.net/servlets/ProjectDocumentList?folderID=100
-
-
-