Использовании интерфейс на саксофоне интерфейса

Одним из основных преимуществ является то, что проверку можно комбинировать его с стандартных парсеров, как SAX. В этом случае при обращении SAX случае мы не безразлично документ действителен или нет. Validator будет проверить это для нас. И мы будем получать SAX событий из уже проверены XML содержание. Приведенном ниже показано, как вставить JAXP проверка между исходным XML-файла и SAX-анализатор:


import javax.xml.transform.sax.SAXResult;

import javax.xml.transform.sax.SAXSource;

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.InputSource;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;



/**

 * A sample application which shows how to perform a

 * XML document validation while parsing XML with SAX.

 */



public class Test {

  public static void main(String[] args) {

    try {

      // create schema by from an XSD file:

      String schemaLang = "http://www.w3.org/2001/XMLSchema";

      SchemaFactory jaxp = SchemaFactory.newInstance(schemaLang);

      Schema schema = jaxp.newSchema(new StreamSource("sample.xsd"));

      // prepare document validator:

      Validator validator = schema.newValidator();



      // prepare SAX handler and SAX result receiving validate data:

      SaxHandler handler = new SaxHandler();

      SAXResult sax = new SAXResult(handler);



      // at last send valid data to out SAX handler:

      SAXSource source = new SAXSource(new InputSource("sample.xml"));

      validator.validate(source, sax);



    }catch (SAXException ex) {

      // we are here if the document is not valid:

      // ... process validation error...

      ex.printStackTrace();

    catch (Exception ex) {

      ex.printStackTrace();

    }

  }



  // our SAX handler receiving validated data:

  private static final class SaxHandler extends DefaultHandler {

    // ...

  }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>