正 文

模式验证结构-JAXP 1.3 的特性


www.7dspace.com  更新日期:2005-10-29 4:55:30  七度空间


       在您装载一个Schema对象到内存以后, 您能采用第二个方法,通过Schema对象使用Validator 验证XML 文件。首先您从Schema对象中创建一个Validator 对象。然后调用在Validator 对象中的validate() 方法来验证:

   Validator v = schema.newValidator();
   v.validate(new StreamSource(xml));

       Validator对象接受java.xml.transform.Source作为输入。这意味着, 它可接受基于事件, SAX 源(SAXSource) 和基于对象, 文档对象模型(DOM) 源(DOMSource) 。接受DOMSource作为输入, Validator能由指定的Schema对象验证一个在内存中的DOM文件或节点。

   Validator v = schema.newValidator();
   v.validate(new DOMSource(<DOM NODE>));

       如果要验证一个DOM 节点或指定的SAXSource,您也可考虑Validator方法。既使SAX 驱动器的执行是来自另外的一个供营商这个方法仍然可以运作。

       第三个方法是创建一个特殊设计的javax.xml.validation.ValidatorHandler来验证SAX 事件:

   SAXParserFactory spf = SAXParserFactory.newInstance();
   spf.setNamespaceAware(true);
   XMLReader reader = spf.newSAXParser().getXMLReader();
   ValidatorHandler vh =  schema.newValidatorHandler();
   //key is to set "ValidatorHandler" as ContentHandler
   //so that SAX event can be validated
   reader.setContentHandler(vh);
   reader.parse(xml);

      注意验证SAX事件, 您需要设置ValidatorHandler 为ContentHandler 。

      使用ValidatorHandler, 您也能利用模式验证一个JDOM 文件。 实际上, 任一个可在一个SAX流顶部建立或可产生SAX事件的对象模型(譬如XOM 和DOM4J)能由SVF利用一个模式来验证XML 文件。这是可能的,因为ValidationHandler 能验证一个SAX流。以下代码片断说明了一个JDOM文件是如何利用一个模式来验证的,假设你已经获取了前面例子中显示的ValidatorHandler:

   SAXOutputter so = new SAXOutputter(vh);
   so.output(jdomDocument);

      SAXOutputter 对象为JDOM 文件释放SAX事件。 SAX 事件然后由ValidatorHandler验证。

      您能使用SVF做的其它事是, 譬如在转换以后验证XML或获得模式类型信息。使用SVF的更多信息请参考:Easy and Efficient XML Processing: Upgrade to JAXP 1.3

      运行例代码

      范例程序包伴有本提示。范例程序包中的代码包括编码实例和展示技术报道信息。在这个程序包里还有额外范例。 例如, 其中一个例子比较使用新的SVF模式验证性能和设置二个模式属性的前面的方法。 其它范例显示利用模式怎么验证Transformer的输出。安装和运行范例:

      1.下载sample file并解压缩其内容。你能在形如<install_dir>\ValidationFramework的目录中看到解压缩出来的目录。例如,如果你解压缩内容到一台Windows机器上的C:\中,你最近创造的目录就应该是C:\ValidationFramework 。解压缩出来的内容包括一个README文件,此文件中包括了运行例子的介绍。你能使用在J2SE 5.0或者Java WSDP 1.6平台上的JAXP 1.3来运行例程序。你也能下载在java.net 上的JAXP 项目页面中的standalone JAXP 1.3 implementation 。

      2.运行ValidationFramework 目录中的ant图标。要编译使用如下的命令:

      ant compile

3页,页码:[1] [2] [3] 

上一篇:网管工具:Ghost的二十个实用参数
下一篇:微软不怕Google 6个月内升级搜索引擎技术
作者:  来源:Matrix ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐