Skip to content
Snippets Groups Projects
Commit ef980daa authored by langella's avatar langella
Browse files

give line number on sax parse error

git-svn-id: https://subversion.renater.fr/xtandempipeline/trunk@340 b8ef2a07-7df7-436f-90b9-41648038564b
parent dd1b4098
No related branches found
No related tags found
No related merge requests found
package fr.inra.pappso.xtandempipeline.MsException;
import org.apache.log4j.Logger;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
public class MyErrorHandler implements ErrorHandler {
private static final Logger logger = Logger.getLogger(MyErrorHandler.class);
public void warning(SAXParseException exception) throws SAXException {
// Bring things to a crashing halt
logger.warn("**Parsing Warning**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
// throw new SAXException("Warning encountered");
}
public void error(SAXParseException exception) throws SAXException {
// Bring things to a crashing halt
logger.error("**Parsing Error**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
// throw new SAXException("Error encountered");
}
public void fatalError(SAXParseException exception) throws SAXException {
// Bring things to a crashing halt
logger.fatal("**Parsing Fatal Error**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
System.out.println("**Parsing Fatal Error**" + "\n\t Line: "
+ exception.getLineNumber() + "\n\t URI: "
+ exception.getSystemId() + "\n\t Message: "
+ exception.getMessage());
throw new SAXException("ERROR at line " + exception.getLineNumber()
+ " column " + exception.getColumnNumber() + " : "
+ exception.getMessage());
}
}
\ No newline at end of file
...@@ -6,28 +6,23 @@ import java.io.InputStream; ...@@ -6,28 +6,23 @@ import java.io.InputStream;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException; import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.xerces.impl.io.MalformedByteSequenceException; import org.apache.xerces.impl.io.MalformedByteSequenceException;
import fr.inra.moulon.utils.MyErrorHandler;
import fr.inra.pappso.xtandempipeline.MsException.MSMSException; import fr.inra.pappso.xtandempipeline.MsException.MSMSException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
public class parse_file { public class parse_file {
private static final Logger logger = Logger.getLogger(parse_file.class); private static final Logger logger = Logger.getLogger(parse_file.class);
private DefaultHandler handler; private DefaultHandler handler;
private SAXParserFactory factory;
private SAXParser saxParser;
// private File file_to_parse; // private File file_to_parse;
public parse_file(DefaultHandler h, File f) public parse_file(DefaultHandler h, File f) throws Exception {
throws Exception {
logger.debug("parse_file begin"); logger.debug("parse_file begin");
// on recupere le handler et le fichier à parser // on recupere le handler et le fichier à parser
this.handler = h; this.handler = h;
...@@ -37,38 +32,38 @@ public class parse_file { ...@@ -37,38 +32,38 @@ public class parse_file {
throw new MSMSException("The file " throw new MSMSException("The file "
+ file_to_parse.getAbsolutePath() + file_to_parse.getAbsolutePath()
+ " doesn't exist : no parsing possible"); + " doesn't exist : no parsing possible");
this.factory = SAXParserFactory.newInstance();
this.saxParser = factory.newSAXParser();
try { try {
InputStream inputStream = new FileInputStream(file_to_parse); InputStream inputStream = new FileInputStream(file_to_parse);
InputSource is = new InputSource(inputStream); InputSource is = new InputSource(inputStream);
this.saxParser.parse(is, this.handler); XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(this.handler);
reader.setErrorHandler(new MyErrorHandler());
reader.parse(is);
} catch (MalformedByteSequenceException e) { } catch (MalformedByteSequenceException e) {
try { try {
logger.debug("Mauvais encodage"); logger.debug("Mauvais encodage");
InputStream inputStream = new FileInputStream(file_to_parse); InputStream inputStream = new FileInputStream(file_to_parse);
InputSource is = new InputSource(inputStream); InputSource is = new InputSource(inputStream);
is.setEncoding("ISO-8859-1"); is.setEncoding("ISO-8859-1");
this.saxParser.parse(is, this.handler); XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(this.handler);
reader.setErrorHandler(new MyErrorHandler());
reader.parse(is);
} catch (Exception e2) { } catch (Exception e2) {
throw e2; throw e2;
} }
} catch (SAXException e) { } catch (SAXException e) {
logger logger.error("Problems to parse xml file" + file_to_parse.getName());
.error("Problems to parse xml file"
+ file_to_parse.getName());
logger.error(e.getMessage()); logger.error(e.getMessage());
StackTraceElement[] f1 = e.getStackTrace(); StackTraceElement[] f1 = e.getStackTrace();
for (int i = 0; i < f1.length; i++) { for (int i = 0; i < f1.length; i++) {
logger.error(f1[i]); logger.error(f1[i]);
} }
throw new MSMSException(file_to_parse.getName() throw new MSMSException("Problem parsing file "
+ " is not a valid xml file:\n" + e.getMessage()); + file_to_parse.getName() + " :\n" + e.getMessage());
} catch (Exception e) { } catch (Exception e) {
logger logger.error("Problems to parse xml file" + file_to_parse.getName());
.error("Problems to parse xml file"
+ file_to_parse.getName());
logger.error(e.getMessage()); logger.error(e.getMessage());
StackTraceElement[] f1 = e.getStackTrace(); StackTraceElement[] f1 = e.getStackTrace();
for (int i = 0; i < f1.length; i++) { for (int i = 0; i < f1.length; i++) {
...@@ -86,12 +81,15 @@ public class parse_file { ...@@ -86,12 +81,15 @@ public class parse_file {
throw new MSMSException("handler is null"); throw new MSMSException("handler is null");
} }
this.handler = h; this.handler = h;
this.factory = SAXParserFactory.newInstance();
this.saxParser = factory.newSAXParser();
try { try {
InputSource is = new InputSource(input); InputSource is = new InputSource(input);
this.saxParser.parse(is, this.handler); XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(this.handler);
reader.setErrorHandler(new MyErrorHandler());
reader.parse(is);
} catch (SAXParseException eSax) { } catch (SAXParseException eSax) {
String message = "Error reading XML file : " String message = "Error reading XML file : "
+ eSax.getCause().getMessage(); + eSax.getCause().getMessage();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment