617 lines
32 KiB
Java
617 lines
32 KiB
Java
/*
|
|
File: XMLParser.java
|
|
|
|
University of Applied Science Berne,HTA-Biel/Bienne,
|
|
Computer Science Department.
|
|
|
|
Diploma thesis J3D Solar System Simulator
|
|
Originally written by Marcel Portner & Bernhard Hari (c) 2000
|
|
|
|
CVS - Information :
|
|
|
|
$Header: /var/cvsreps/projects/c450/2000/sss3d/source_diploma/sss3d/utils/xmlparser/XMLParser.java,v 1.11 2000/12/13 13:42:17 portm Exp $
|
|
$Author: portm $
|
|
$Date: 2000/12/13 13:42:17 $
|
|
$State: Exp $
|
|
|
|
*/
|
|
package sss3d.utils.xmlparser;
|
|
|
|
import sss3d.contentbranch.*;
|
|
import sss3d.utils.SSS3dConstants;
|
|
|
|
import java.io.*;
|
|
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
import javax.xml.parsers.FactoryConfigurationError;
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
import org.xml.sax.SAXException;
|
|
import org.xml.sax.SAXParseException;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
import org.w3c.dom.*;
|
|
|
|
import java.util.Hashtable;
|
|
|
|
/**
|
|
* This class is used to parse an XML document. The XML file
|
|
* holds important data about a celestial object or
|
|
* the initialization state of the solar system simulator.
|
|
*
|
|
* <pre>
|
|
* use :
|
|
* XMLParser xmlp = new XMLParser(CelestialObjectInfo, "fully qualified path");
|
|
* xmlp.read();
|
|
* </pre>
|
|
*
|
|
* @author Marcel Portner & Bernhard Hari
|
|
* @version $Revision: 1.11 $
|
|
* @see sss3d.contentbranch.CelestialObjectInfo
|
|
* @see sss3d.contentbranch.InitializationObject
|
|
* @see sss3d.utils.observer.ObjectsInformation
|
|
*/
|
|
public class XMLParser {
|
|
|
|
private String path;
|
|
private InitializationObject iniObject;
|
|
private CelestialObjectInfo cObjInfo;
|
|
|
|
/**
|
|
* Constructs an object of an XMLParser.
|
|
*
|
|
* @param object an object to store the information from the file.
|
|
* @param type the type of this xml file defined inside class SSS3dConstants
|
|
* @param path path to the file containing the information
|
|
*/
|
|
public XMLParser(Object object,int type, String path) {
|
|
if ( type == XMLConstants.XML_CELESTIALOBJECT ) {
|
|
this.cObjInfo = (CelestialObjectInfo)object;
|
|
} else if( type == XMLConstants.XML_INITIALIZATION ) {
|
|
this.iniObject = (InitializationObject)object;
|
|
}
|
|
this.path = path.toLowerCase();
|
|
}
|
|
|
|
/**
|
|
* Method parses an XML file. Depending on the parameters and
|
|
* their values it stores the information in the InitializationObject.
|
|
*
|
|
* @exception IOExecption throws an IOException in case of a read error
|
|
*/
|
|
private void parseInitializationFile() throws IOException {
|
|
|
|
// get current document from CelestialObjectInfo
|
|
Document document = (Document)iniObject.getParameter(XMLConstants.DOCUMENT);
|
|
Hashtable parameters = new Hashtable();
|
|
|
|
// initialize hashtable
|
|
for (int i = XMLConstants.INITIALIZATION_NAMES_MIN;
|
|
i <= XMLConstants.INITIALIZATION_NAMES_MAX; i++) {
|
|
parameters.put(XMLConstants.treeElementNames[i], new Integer(i));
|
|
}
|
|
|
|
if ( document != null ) {
|
|
// iterate over each possible element tag
|
|
// defined in class XMLConstants
|
|
for(int tag = XMLConstants.INITIALIZATION_NAMES_MIN;
|
|
tag <= XMLConstants.INITIALIZATION_NAMES_MAX; tag++ ) {
|
|
|
|
// get node of specific tag
|
|
// show only leaf nodes
|
|
String nodeName = XMLConstants.treeElementNames[tag];
|
|
|
|
if ( !nodeName.equals("ini") &&
|
|
!nodeName.equals("info") &&
|
|
!nodeName.equals("values") ) {
|
|
|
|
NodeList nodes = document.getElementsByTagName(nodeName);
|
|
// search for value of node == nodeName
|
|
for(int i = 0; i < nodes.getLength(); i++) {
|
|
|
|
Node child = nodes.item(i);
|
|
if ( child.hasChildNodes() && !(
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.STAR]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.PLANET]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.MOON]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.COMET]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.SATELLITE]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.ROCKET]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.ANIMATIONSPEED])
|
|
)) {
|
|
|
|
NodeList nl = child.getChildNodes();
|
|
for(int j = 0; j < nl.getLength(); j++) {
|
|
if ( nl.item(j).getNodeType() == XMLConstants.TEXT_TYPE ) {
|
|
// get this value and set it correctly inside
|
|
// CelestialObjectInfo.....
|
|
Integer n = (Integer)parameters.get( child.getNodeName() );
|
|
String value = nl.item(j).getNodeValue();
|
|
//System.out.println("Name "+child.getNodeName()+" Value "+value);
|
|
|
|
/*System.out.println("Parameter = "+child.getNodeName()+
|
|
" Value = "+nl.item(j).getNodeValue());
|
|
*/
|
|
|
|
if (n != null) {
|
|
switch ( n.intValue() ){
|
|
case XMLConstants.FILETYPE :
|
|
iniObject.setParameter(value,XMLConstants.FILETYPE);
|
|
break;
|
|
case XMLConstants.ID :
|
|
iniObject.setParameter(value,XMLConstants.ID);
|
|
break;
|
|
case XMLConstants.FILENAME :
|
|
iniObject.setParameter(value,XMLConstants.FILENAME);
|
|
break;
|
|
case XMLConstants.PATH :
|
|
iniObject.setParameter(value,XMLConstants.PATH);
|
|
break;
|
|
case XMLConstants.DAY :
|
|
iniObject.setParameter(new Integer(value),XMLConstants.DAY);
|
|
break;
|
|
case XMLConstants.MONTH :
|
|
iniObject.setParameter(new Integer(value),XMLConstants.MONTH);
|
|
break;
|
|
case XMLConstants.YEAR :
|
|
iniObject.setParameter(new Integer(value),XMLConstants.YEAR);
|
|
break;
|
|
case XMLConstants.HOUR :
|
|
iniObject.setParameter(new Integer(value),XMLConstants.HOUR);
|
|
break;
|
|
case XMLConstants.MINUTES :
|
|
iniObject.setParameter(new Integer(value),XMLConstants.MINUTES);
|
|
break;
|
|
case XMLConstants.SECONDS :
|
|
iniObject.setParameter(new Integer(value),XMLConstants.SECONDS);
|
|
break;
|
|
case XMLConstants.JDAY :
|
|
iniObject.setParameter(new Double(value),XMLConstants.JDAY);
|
|
break;
|
|
case XMLConstants.CALCULATION :
|
|
if ( value.equals("kepler") ) {
|
|
iniObject.setParameter(new Integer(SSS3dConstants.KEPLER),XMLConstants.CALCULATION);
|
|
} else if ( value.equals("ellipse") ) {
|
|
iniObject.setParameter(new Integer(SSS3dConstants.ELLIPSE),XMLConstants.CALCULATION);
|
|
} else if ( value.equals("analytic") ) {
|
|
iniObject.setParameter(new Integer(SSS3dConstants.ANALYTIC),XMLConstants.CALCULATION);
|
|
} else {
|
|
// in case of an unmatching value, use kepler as default calculation method
|
|
iniObject.setParameter(new Integer(SSS3dConstants.KEPLER),XMLConstants.CALCULATION);
|
|
}
|
|
break;
|
|
/*case XMLConstants.ANIMATIONSPEED :
|
|
iniObject.setParameter(new Integer(value),XMLConstants.ANIMATIONSPEED);
|
|
break; */
|
|
case XMLConstants.COMPRESSED :
|
|
iniObject.setParameter(new Boolean(value),XMLConstants.COMPRESSED);
|
|
break;
|
|
case XMLConstants.GLASSES3D :
|
|
iniObject.setParameter(new Boolean(value),XMLConstants.GLASSES3D);
|
|
break;
|
|
case XMLConstants.JOYSTICK :
|
|
iniObject.setParameter(new Boolean(value),XMLConstants.JOYSTICK);
|
|
break;
|
|
case XMLConstants.CAMERAATORIGIN :
|
|
iniObject.setParameter(new Boolean(value),XMLConstants.CAMERAATORIGIN);
|
|
break;
|
|
case XMLConstants.CAMERA :
|
|
boolean found = false;
|
|
value = value.toLowerCase();
|
|
for( int camera = 0; camera < SSS3dConstants.CAMERA_POSITIONS.length;camera++) {
|
|
if ( value.equals( (SSS3dConstants.CAMERA_POSITIONS[camera]).toLowerCase() ) ) {
|
|
iniObject.setParameter(new Integer(camera),XMLConstants.CAMERA);
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
if ( !found ) {
|
|
// in case of an unmatching value, use kepler as default calculation method
|
|
iniObject.setParameter(new Integer(SSS3dConstants.CAMERA_DEFAULT),XMLConstants.CAMERA);
|
|
}
|
|
|
|
break;
|
|
default : break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} else if(nodeName.equals(XMLConstants.treeElementNames[XMLConstants.ANIMATIONSPEED]) ){
|
|
AnimationSpeed animationSpeed;
|
|
|
|
NamedNodeMap nnm = child.getAttributes();
|
|
Node type = nnm.getNamedItem(XMLConstants.treeElementNames[XMLConstants.TYPE]);
|
|
Node value = nnm.getNamedItem(XMLConstants.treeElementNames[XMLConstants.VALUE]);
|
|
|
|
String nodeValue = type.getNodeValue();
|
|
|
|
int t = AnimationSpeed.DAYS_PER_SECOND;
|
|
|
|
if ( nodeValue.equals(AnimationSpeed.NAMES[AnimationSpeed.HOURS_PER_SECOND]) ) {
|
|
t = AnimationSpeed.HOURS_PER_SECOND;
|
|
} else if( nodeValue.equals(AnimationSpeed.NAMES[AnimationSpeed.MINUTES_PER_SECOND]) ) {
|
|
t = AnimationSpeed.MINUTES_PER_SECOND;
|
|
}
|
|
|
|
try {
|
|
|
|
int v = (new Integer(value.getNodeValue())).intValue();
|
|
animationSpeed = new AnimationSpeed( t, v );
|
|
System.out.println(animationSpeed.toString());
|
|
} catch (NumberFormatException e) {
|
|
// create animationspeed with default values
|
|
animationSpeed = new AnimationSpeed();
|
|
}
|
|
iniObject.setParameter(animationSpeed, XMLConstants.ANIMATIONSPEED);
|
|
|
|
} else if(nodeName.equals(XMLConstants.treeElementNames[XMLConstants.STAR]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.PLANET]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.MOON]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.COMET]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.SATELLITE]) ||
|
|
nodeName.equals(XMLConstants.treeElementNames[XMLConstants.ROCKET]) ){
|
|
|
|
IniData data;
|
|
|
|
// find out parent
|
|
//System.out.println("NODENAME ---->>>>>>>>>> "+nodeName);
|
|
Node parentNode = child.getParentNode();
|
|
NamedNodeMap pnnm = parentNode.getAttributes();
|
|
Node attribute = pnnm.getNamedItem(XMLConstants.treeElementNames[XMLConstants.OBJECTNAME]);
|
|
|
|
int type = SSS3dConstants.UNKNOWN_TYPE;
|
|
|
|
if ( nodeName.equals(SSS3dConstants.TYPES[SSS3dConstants.STAR_TYPE]) ) {
|
|
type = SSS3dConstants.STAR_TYPE;
|
|
|
|
} else if ( nodeName.equals(SSS3dConstants.TYPES[SSS3dConstants.PLANET_TYPE]) ) {
|
|
type = SSS3dConstants.PLANET_TYPE;
|
|
|
|
} else if ( nodeName.equals(SSS3dConstants.TYPES[SSS3dConstants.MOON_TYPE]) ) {
|
|
type = SSS3dConstants.MOON_TYPE;
|
|
|
|
} else if ( nodeName.equals(SSS3dConstants.TYPES[SSS3dConstants.COMET_TYPE]) ) {
|
|
type = SSS3dConstants.COMET_TYPE;
|
|
|
|
} else if ( nodeName.equals(SSS3dConstants.TYPES[SSS3dConstants.SATELLITE_TYPE]) ) {
|
|
type = SSS3dConstants.SATELLITE_TYPE;
|
|
|
|
} else if ( nodeName.equals(SSS3dConstants.TYPES[SSS3dConstants.ROCKET_TYPE]) ) {
|
|
type = SSS3dConstants.ROCKET_TYPE;
|
|
|
|
}
|
|
|
|
if (attribute != null) {
|
|
data = new IniData(attribute.getNodeValue(), null,type, false, false, false, "red" );
|
|
} else {
|
|
data = new IniData(null, null,type, false, false, false, "red" );
|
|
}
|
|
|
|
NamedNodeMap nnm = child.getAttributes();
|
|
|
|
for (int j = XMLConstants.OBJECTNAME; j <= XMLConstants.COORDINATESYSTEM; j++) {
|
|
Node node = nnm.getNamedItem(XMLConstants.treeElementNames[j]);
|
|
|
|
if (node != null) {
|
|
|
|
// get this value and set it correctly inside
|
|
Integer n = (Integer)parameters.get( node.getNodeName() );
|
|
|
|
|
|
if (n != null) {
|
|
switch ( n.intValue() ){
|
|
case XMLConstants.OBJECTNAME :
|
|
data.setName(node.getNodeValue());
|
|
break;
|
|
case XMLConstants.VISIBLE :
|
|
data.setVisible((new Boolean(node.getNodeValue())).booleanValue());
|
|
break;
|
|
case XMLConstants.ORBIT :
|
|
data.setOrbit((new Boolean(node.getNodeValue())).booleanValue());
|
|
break;
|
|
case XMLConstants.COLORORBIT :
|
|
data.setColorOrbit(node.getNodeValue());
|
|
break;
|
|
case XMLConstants.COORDINATESYSTEM :
|
|
data.setCoordinateSystem((new Boolean(node.getNodeValue())).booleanValue());
|
|
break;
|
|
default : break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Integer n = (Integer)parameters.get(nodeName);
|
|
//System.out.println("switch : "+n.toString());
|
|
if (n != null) {
|
|
switch ( n.intValue() ){
|
|
case XMLConstants.STAR :
|
|
iniObject.setParameter(data, XMLConstants.STAR);
|
|
break;
|
|
case XMLConstants.PLANET :
|
|
iniObject.setParameter(data, XMLConstants.PLANET);
|
|
break;
|
|
case XMLConstants.MOON :
|
|
iniObject.setParameter(data, XMLConstants.MOON);
|
|
break;
|
|
case XMLConstants.COMET :
|
|
iniObject.setParameter(data, XMLConstants.COMET);
|
|
break;
|
|
case XMLConstants.SATELLITE :
|
|
iniObject.setParameter(data, XMLConstants.SATELLITE);
|
|
break;
|
|
case XMLConstants.ROCKET :
|
|
iniObject.setParameter(data, XMLConstants.ROCKET);
|
|
break;
|
|
default : break;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns a string representation of a given node type.
|
|
*
|
|
* @param node the node
|
|
* @returns String a string representing this node type
|
|
*/
|
|
private String nodeType(Node node) {
|
|
int type = node.getNodeType();
|
|
String str = "";
|
|
switch ( type ) {
|
|
|
|
case XMLConstants.ATTR_TYPE : str = "attribute_node";
|
|
break;
|
|
case XMLConstants.CDATA_TYPE : str = "cdata_section_node";
|
|
break;
|
|
case XMLConstants.COMMENT_TYPE : str = "comment_node";
|
|
break;
|
|
case XMLConstants.DOCFRAG_TYPE : str = "document_fragment_node";
|
|
break;
|
|
case XMLConstants.DOCUMENT_TYPE : str = "document_node";
|
|
break;
|
|
case XMLConstants.DOCTYPE_TYPE : str = "document_type_node";
|
|
break;
|
|
case XMLConstants.ELEMENT_TYPE : str = "element_node";
|
|
break;
|
|
case XMLConstants.ENTITY_TYPE : str = "entity_node";
|
|
break;
|
|
case XMLConstants.ENTITYREF_TYPE : str = "entity_reference_node";
|
|
break;
|
|
case XMLConstants.NOTATION_TYPE : str = "notation_node";
|
|
break;
|
|
case XMLConstants.PROCINSTR_TYPE : str = "processsing_instruction_node";
|
|
break;
|
|
case XMLConstants.TEXT_TYPE : str = "text_node";
|
|
break;
|
|
default : break;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
|
|
/**
|
|
* Method parses an XML file. Depending on the parameters and
|
|
* their values it stores the information in the CelestialObjectInfo.
|
|
*
|
|
* @exception IOExecption throws an IOException in case of a read error
|
|
*/
|
|
private void parseCelestialObjectFile() throws IOException {
|
|
|
|
// get current document from CelestialObjectInfo
|
|
Document document = cObjInfo.getDocument();
|
|
Hashtable parameters = new Hashtable();
|
|
|
|
// initialize hashtable
|
|
for (int i = XMLConstants.CELESTIALOBJECT_NAMES_MIN;
|
|
i <= XMLConstants.CELESTIALOBJECT_NAMES_MAX; i++) {
|
|
parameters.put(XMLConstants.treeElementNames[i], new Integer(i));
|
|
}
|
|
|
|
if ( document != null ) {
|
|
|
|
// iterate over each possible element tag
|
|
// defined in class XMLConstants
|
|
for(int tag = 0; tag < XMLConstants.treeElementNames.length; tag++ ) {
|
|
|
|
// get node of specific tag
|
|
// show only leaf nodes
|
|
String nodeName = XMLConstants.treeElementNames[tag];
|
|
|
|
if ( !nodeName.equals("celestialobject") &&
|
|
!nodeName.equals("general") &&
|
|
!nodeName.equals("parameter") ) {
|
|
|
|
NodeList childNodes = document.getElementsByTagName(nodeName);
|
|
|
|
// search for value of node == nodeName
|
|
for(int i = 0; i < childNodes.getLength(); i++) {
|
|
|
|
Node child = childNodes.item(i);
|
|
|
|
NodeList nl = child.getChildNodes();
|
|
|
|
for(int j = 0; j < childNodes.getLength(); j++) {
|
|
if ( nl.item(j).getNodeType() == XMLConstants.TEXT_TYPE ) {
|
|
|
|
// get this value and set it correctly inside
|
|
// CelestialObjectInfo.....
|
|
Integer n = (Integer)parameters.get( child.getNodeName() );
|
|
String value = nl.item(j).getNodeValue();
|
|
|
|
/*System.out.println("Parameter = "+child.getNodeName()+
|
|
" Value = "+nl.item(j).getNodeValue());
|
|
*/
|
|
|
|
if (n != null) {
|
|
switch ( n.intValue() ){
|
|
|
|
case 0 : // celestialobject
|
|
case 1 : // general
|
|
case 2 : break; // parameter
|
|
|
|
case 3 : // type
|
|
cObjInfo.setType( value );
|
|
break;
|
|
case 4 : // name
|
|
cObjInfo.setName( value );
|
|
break;
|
|
case 5 : // name
|
|
cObjInfo.setParentName( value );
|
|
break;
|
|
case 6 : // scalingfactor
|
|
cObjInfo.setScalingFactor( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 7 : // diameter
|
|
cObjInfo.setDiameter( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 8 : // mindistancefromsun
|
|
cObjInfo.setMinDistanceFromSun( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 9 : // maxdistancefromsun
|
|
cObjInfo.setMaxDistanceFromSun( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 10 : // nbrofplanetpositions
|
|
cObjInfo.setNbrOfPositions( (new Integer( value )).intValue() );
|
|
break;
|
|
case 11 : // rotationperiod
|
|
cObjInfo.setRotationPeriod( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 12 : // orbitperiod
|
|
cObjInfo.setOrbitPeriod( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 13 : // meanorbitvelocity
|
|
cObjInfo.setMeanOrbitVelocity( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 14 : // orbiteccentricity
|
|
cObjInfo.setOrbitEccentricity( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 15 : // orbitinclinationtoecliptic
|
|
cObjInfo.setOrbitInclinationToEcliptic( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 16 : // inclinationofequatortoorbit
|
|
cObjInfo.setInclinationOfEquatorToOrbit( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 17 : // volume
|
|
cObjInfo.setVolume( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 18 : // distance
|
|
cObjInfo.setDistance( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 19 : // mass
|
|
cObjInfo.setMass( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 20 : // density
|
|
cObjInfo.setDensity( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 21 : // surfacegravity
|
|
cObjInfo.setSurfaceGravity( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 22 : // escapevelocity
|
|
cObjInfo.setEscapeVelocity( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 23 : // meantempatsolidsurface
|
|
cObjInfo.setTempAtSolidSurface( (new Double( value )).doubleValue() );
|
|
break;
|
|
case 24 : // majoratmosphericconstitutents
|
|
cObjInfo.setAtmosphericConstitutents( value );
|
|
break;
|
|
|
|
case 25 : // epoch
|
|
cObjInfo.setEpoch( (new Double( value )).doubleValue() );
|
|
break;
|
|
|
|
case 26 : // equinox
|
|
cObjInfo.setEquinox( (new Double( value )).doubleValue() );
|
|
break;
|
|
|
|
case 27 : // longitudenode
|
|
cObjInfo.setLongitudeNode( (new Double( value )).doubleValue() );
|
|
break;
|
|
|
|
case 28 : // perihelion
|
|
cObjInfo.setPerihelion( (new Double( value )).doubleValue() );
|
|
break;
|
|
|
|
default : break;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Method opens the XML file and calls the private method parse() to
|
|
* parse the XML Document.
|
|
*
|
|
* @param type the type of the xml file
|
|
*/
|
|
public void read(int type) {
|
|
|
|
DocumentBuilderFactory factory =
|
|
DocumentBuilderFactory.newInstance();
|
|
try {
|
|
DocumentBuilder builder = factory.newDocumentBuilder();
|
|
|
|
if ( type == XMLConstants.XML_CELESTIALOBJECT ) {
|
|
System.out.println(path);
|
|
File file = new File(path);
|
|
if ( file != null ) {
|
|
cObjInfo.setDocument( builder.parse( file ) );
|
|
parseCelestialObjectFile();
|
|
}
|
|
} else if ( type == XMLConstants.XML_INITIALIZATION ) {
|
|
//System.out.println("XML_INITIALIZATION "+path+" "+XMLConstants.DOCUMENT);
|
|
|
|
iniObject.setParameter( builder.parse( new File(path)),
|
|
XMLConstants.DOCUMENT );
|
|
parseInitializationFile();
|
|
}
|
|
|
|
} catch (SAXParseException spe) {
|
|
// Error generated by the parser
|
|
System.out.println ("\n** Parsing error"
|
|
+ ", line " + spe.getLineNumber ()
|
|
+ ", uri " + spe.getSystemId ());
|
|
System.out.println(" " + spe.getMessage() );
|
|
|
|
// Use the contained exception, if any
|
|
Exception x = spe;
|
|
if (spe.getException() != null)
|
|
x = spe.getException();
|
|
x.printStackTrace();
|
|
|
|
} catch (SAXException sxe) {
|
|
// Error generated by this application
|
|
// (or a parser-initialization error)
|
|
Exception x = sxe;
|
|
if (sxe.getException() != null)
|
|
x = sxe.getException();
|
|
x.printStackTrace();
|
|
|
|
} catch (ParserConfigurationException pce) {
|
|
// Parser with specified options can't be built
|
|
pce.printStackTrace();
|
|
|
|
} catch (IOException ioe) {
|
|
// I/O error
|
|
ioe.printStackTrace();
|
|
}
|
|
|
|
} // end function read()
|
|
|
|
}// end class XMLParser
|