Java by API/org.xml.sax/SAXParseException

Материал из Java эксперт
Перейти к: навигация, поиск

catch SAXParseException

import java.io.StringReader;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
public class MainClass {
  static public void main(String[] arg) throws Exception{
    boolean validate = false;
    SAXParserFactory spf = SAXParserFactory.newInstance();
    spf.setValidating(validate);
    XMLReader reader = null;
      SAXParser parser = spf.newSAXParser();
      reader = parser.getXMLReader();
    reader.setErrorHandler(new MyErrorHandler());
      reader.parse(new InputSource(new StringReader(xmlString)));
}
  static String xmlString = "<PHONEBOOK>" +
  "  <PERSON>" +
  "   <NAME>Joe Wang</NAME>" +
  "   <EMAIL>joe@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>202-999-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  <PERSON>   " +
  "<NAME>Karol</NAE>" +    // error here
  "   <EMAIL>karol@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>306-999-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  <PERSON>" +
  "   <NAME>Green</NAME>" +
  "   <EMAIL>green@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>202-414-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  </PHONEBOOK>";
}
class MyErrorHandler implements ErrorHandler {
  public void warning(SAXParseException e) throws SAXException {
    show("Warning", e);
    throw (e);
  }
  public void error(SAXParseException e) throws SAXException {
    show("Error", e);
    throw (e);
  }
  public void fatalError(SAXParseException e) throws SAXException {
    show("Fatal Error", e);
    throw (e);
  }
  private void show(String type, SAXParseException e) {
    System.out.println(type + ": " + e.getMessage());
    System.out.println("Line " + e.getLineNumber() + " Column "
        + e.getColumnNumber());
    System.out.println("System ID: " + e.getSystemId());
  }
}





SAXParseException: getColumnNumber()

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.sax.SAXSource;
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.SAXParseException;
public class MainClass {
  public static void main(String[] args) throws IOException {
    File documentFile = new File(args[0]);
    File schemaFile = new File(args[1]);
    SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = null;
    try {
      schema = factory.newSchema(schemaFile);
    } catch (SAXException e) {
      fail(e);
    }
    Validator validator = schema.newValidator();
    SAXSource source = new SAXSource(new InputSource(new FileReader(documentFile)));
    try {
      validator.validate(source);
    } catch (SAXException e) {
      fail(e);
    }
  }
  static void fail(SAXException e) {
    if (e instanceof SAXParseException) {
      SAXParseException spe = (SAXParseException) e;
      System.err.printf("%s:%d:%d: %s%n", spe.getSystemId(), spe.getLineNumber(), spe
          .getColumnNumber(), spe.getMessage());
    } else {
      System.err.println(e.getMessage());
    }
    System.exit(1);
  }
}





SAXParseException: getLineNumber()

import java.io.StringReader;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
public class MainClass {
  static public void main(String[] arg) throws Exception{
    boolean validate = false;
    SAXParserFactory spf = SAXParserFactory.newInstance();
    spf.setValidating(validate);
    XMLReader reader = null;
      SAXParser parser = spf.newSAXParser();
      reader = parser.getXMLReader();
    reader.setErrorHandler(new MyErrorHandler());
      reader.parse(new InputSource(new StringReader(xmlString)));
}
  static String xmlString = "<PHONEBOOK>" +
  "  <PERSON>" +
  "   <NAME>Joe Wang</NAME>" +
  "   <EMAIL>joe@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>202-999-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  <PERSON>   " +
  "<NAME>Karol</NAE>" +    // error here
  "   <EMAIL>karol@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>306-999-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  <PERSON>" +
  "   <NAME>Green</NAME>" +
  "   <EMAIL>green@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>202-414-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  </PHONEBOOK>";
}
class MyErrorHandler implements ErrorHandler {
  public void warning(SAXParseException e) throws SAXException {
    show("Warning", e);
    throw (e);
  }
  public void error(SAXParseException e) throws SAXException {
    show("Error", e);
    throw (e);
  }
  public void fatalError(SAXParseException e) throws SAXException {
    show("Fatal Error", e);
    throw (e);
  }
  private void show(String type, SAXParseException e) {
    System.out.println(type + ": " + e.getMessage());
    System.out.println("Line " + e.getLineNumber() + " Column "
        + e.getColumnNumber());
    System.out.println("System ID: " + e.getSystemId());
  }
}





SAXParseException: getSystemId()

import java.io.StringReader;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
public class MainClass {
  static public void main(String[] arg) throws Exception{
    boolean validate = false;
    SAXParserFactory spf = SAXParserFactory.newInstance();
    spf.setValidating(validate);
    XMLReader reader = null;
      SAXParser parser = spf.newSAXParser();
      reader = parser.getXMLReader();
    reader.setErrorHandler(new MyErrorHandler());
      reader.parse(new InputSource(new StringReader(xmlString)));
}
  static String xmlString = "<PHONEBOOK>" +
  "  <PERSON>" +
  "   <NAME>Joe Wang</NAME>" +
  "   <EMAIL>joe@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>202-999-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  <PERSON>   " +
  "<NAME>Karol</NAE>" +    // error here
  "   <EMAIL>karol@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>306-999-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  <PERSON>" +
  "   <NAME>Green</NAME>" +
  "   <EMAIL>green@yourserver.ru</EMAIL>" +
  "   <TELEPHONE>202-414-9999</TELEPHONE>" +
  "   <WEB>www.jexp.ru</WEB>" +
  "  </PERSON>" +
  "  </PHONEBOOK>";
}
class MyErrorHandler implements ErrorHandler {
  public void warning(SAXParseException e) throws SAXException {
    show("Warning", e);
    throw (e);
  }
  public void error(SAXParseException e) throws SAXException {
    show("Error", e);
    throw (e);
  }
  public void fatalError(SAXParseException e) throws SAXException {
    show("Fatal Error", e);
    throw (e);
  }
  private void show(String type, SAXParseException e) {
    System.out.println(type + ": " + e.getMessage());
    System.out.println("Line " + e.getLineNumber() + " Column "
        + e.getColumnNumber());
    System.out.println("System ID: " + e.getSystemId());
  }
}