CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web Services / XML

java如何检验xsd规范的xml文档,高分相送

楼主michoal(michoal)2003-12-03 15:54:43 在 Java / Web Services / XML 提问

java如何检验xsd规范的xml文档,高分相送 问题点数:0、回复次数:9Top

1 楼winzhen(haha)回复于 2003-12-03 15:59:13 得分 0

/**   使用Apache   Xerces解析器   */    
  org.apache.xerces.parsers.DOMParser   mParser   =      
  new   org.apache.xerces.parsers.DOMParser();    
  /**   构造函数   */    
   
  //   告诉解析器验证并解析文档    
  try   {    
  mParser.setFeature(   "http://xml.org/sax/features/validation",      
  true);    
  }      
  catch   (SAXException   e)   {    
  System.out.println("Error   setting   validation   on   parser:");    
  e.printStackTrace();    
  }    
  Top

2 楼michoal(michoal)回复于 2003-12-03 16:54:01 得分 0

我现在有这样几个文件  
  WellFormed.xsd  
  <?xml   version="1.0"   ?>  
  <xs:schema   targetNamespace="WellFormed"  
      xmlns="WellFormed"  
      xmlns:xs="http://www.w3.org/2001/XMLSchema"  
      attributeFormDefault="qualified"  
      elementFormDefault="qualified">  
      <xs:element   name="Test">  
          <xs:complexType>  
              <xs:sequence>  
                  <xs:element   name="Name"   type="xs:string"   minOccurs="0"   />  
              </xs:sequence>  
          </xs:complexType>  
      </xs:element>  
  </xs:schema>    
   
  WellFormed.xml  
  <?xml   version="1.0"   encoding="utf-8"?>  
  <x:Test   xmlns:x="WellFormed">  
          <x:Name>John   Doe</x:Name>  
          <x:temp/>  
  </x:Test>    
   
  这里WellFormed.xml中的x:temp是没有定义的,我希望能检验出来  
   
  Top

3 楼michoal(michoal)回复于 2003-12-03 17:01:13 得分 0

我写了一段程序  
          public   boolean   parse(String   file)   {  
                  boolean   bParser   =   false;  
                   
                  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.setFeature("http://xml.org/sax/features/namespaces",   true);  
   
                          parser.setProperty(  
                                  "http://apache.org/xml/properties/schema/external-schemaLocation",  
                                  "WellFormed   file:///E:/xml/WellFormed.xsd");  
                          parser.parse(file);  
   
                          bParser   =   true;  
                  }   catch   (org.xml.sax.SAXNotRecognizedException   e)   {  
                          e.printStackTrace();  
                  }   catch   (org.xml.sax.SAXNotSupportedException   e)   {  
                          e.printStackTrace();  
                  }   catch   (org.xml.sax.SAXException   e)   {  
                          e.printStackTrace();  
                  }   catch   (IOException   e)   {  
                          e.printStackTrace();  
                  }  
                  return   bParser;  
          }  
  希望如果解析正确就返回true,否则返回false,但是不好用,只有一个提示信息,没有错误捕捉的,错误信息如下:  
  [[Error]   WellFormed.xml:4:11:   cvc-complex-type.2.4.d:   Invalid   content   starting   with   element   'x:temp'.   No   child   element   is   expected   at   this   point.  
   
  希望大家多多帮忙才是Top

4 楼winzhen(haha)回复于 2003-12-03 17:04:17 得分 0

这样我就不是很清楚了  
   
  不过可以看看ibm   developworks   xml专区的在线教程:Xerces-Java   2   中的   XML   Schema   验证  
   
  链接为:  
  http://www-900.cn.ibm.com/developerWorks/cn/cnedu.nsf/xml-onlinecourse-bytitle/D081A7C970B335BFC8256C3A00211A1F?OpenDocument  
   
  搞清楚后也告诉我一下Top

5 楼michoal(michoal)回复于 2003-12-03 18:53:57 得分 0

实现ErrorHandler自己捕捉异常Top

6 楼michoal(michoal)回复于 2003-12-04 15:43:29 得分 0

upTop

7 楼levinling()回复于 2003-12-05 16:30:23 得分 0

就是实现ErrorHandler自己捕捉异常Top

8 楼netramper(过山风)回复于 2003-12-08 16:27:46 得分 0

我用JAXP做了一下。  
  两种解决思路:  
  1.处理Exception.两种实现办法:一种是实现ErrorHandler接口另一种是继承DefaultHandler.  
  2.不处理Exception.直接使用DefaultHandler,然后判断返回的Document节点是否为空。在使用JAXP时,上面的例子将返回null.Top

9 楼michoal(michoal)回复于 2004-01-16 13:17:22 得分 0

请大家集思广益Top

相关问题

  • 求COM规范文档~
  • 求mpeg2规范文档
  • msxml2.DOMDocument4.0 如何用xml schema (xsd) 正确验证一个xml文档?
  • 技术文档编写规范?
  • 求vb代码编写规范文档
  • 求.net 开发规范 技术文档
  • 用哪一种规范的文档作为公司软件开发的规范文档好?
  • 寻找 ISO/IEC 13818-3 , mp3 ,the part 3(audio)of mpeg2 的规范文档
  • 请问哪里有PHP的编程规范文档?
  • 哪位有一位php编程规范约定文档

关键词

  • 文档
  • 检验
  • apache
  • xml
  • wellformed
  • bparser
  • parser
  • setfeature
  • domparser
  • sax

得分解答快速导航

  • 帖主:michoal

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo