📄 tapfileparser.java
字号:
/*
* Copyright (c) 2006, University of Kent
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 1. Neither the name of the University of Kent nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.
*
* 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
* IN THE CIRCUMSTANCES. IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
* SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
* SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
* GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
* TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
* IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
* SERIOUS FAULTS, IN THIS SOFTWARE.
*
* 5. This license is governed, except to the extent that local laws
* necessarily apply, by the laws of England and Wales.
*/
/*
* TAPFileParser.java - 25/07/2006
*/
package issrg.editor2.configurations;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
/**
* Verifies if the inputted TAP file is a valid one.
*
* @author Christian Azzopardi
*/
public class TAPFileParser
{
public Document document;
private InputStream TAPFileDOM;
private String TAPpath, schemaPath;
public String parsingError = "";
/** Creates a new instance of TAPFileParser */
public TAPFileParser(String TAPpath, String schemaPath)
{
this.TAPpath = TAPpath;
this.schemaPath = schemaPath;
File TAPFile = new File(TAPpath);
try
{
TAPFileDOM = new FileInputStream(TAPFile);
}
catch(FileNotFoundException fnfe)
{
//System.out.println("TAP File Not Found!");
return;
}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder builder = factory.newDocumentBuilder();
this.document = builder.parse(TAPFileDOM);
}
catch (SAXException sxe) { }
catch (ParserConfigurationException pce) { }
catch (IOException ioe) { }
catch (SecurityException se) { }
}
public boolean validateDocument()
{
if(this.document == null)
{
return false;
}
SAXParserFactory factory = SAXParserFactory.newInstance();
//factory.setValidating(true);
factory.setNamespaceAware(false);
try
{
XMLReader parser = factory.newSAXParser().getXMLReader();
TAPFileParserErrorHandler tfpeh = new TAPFileParserErrorHandler();
parser.setErrorHandler(tfpeh);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
this.schemaPath);
InputSource is = new InputSource(this.TAPpath);
parser.parse(is);
}
catch(SAXParseException saxpe)
{
parsingError = saxpe.getMessage();
return false;
}
catch(SAXException saxe)
{
parsingError = saxe.getMessage();
return false;
}
catch(ParserConfigurationException pce)
{
parsingError = pce.getMessage();
return false;
}
catch(IOException ioe)
{
parsingError = ioe.getMessage();
return false;
}
return true;
}
public String getErrorMessage()
{
return parsingError;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -