如何通過Java DOM4J讀取xml文件
package test;
import java.io.*;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Main extends SystemEnv{
private static String configFile;
private static String configHeadFile;
//begin config value
private String homeDir = "/ram0";
private boolean nomenclature = false;
private String blabLevel="Debug";
private boolean sqLiteDB = true;
private String dbFileName = "11073Manager.db";
private boolean tcpTransport = true;
private String tcpPort = "8888";
private boolean usbTransport = true;
private String maxCachedReports = "100";
private String managersystemid = "\\x00\\x40\\x47\\x01\\x23\\x45\\x67\\x89";
private String logFileName = "11073Manager.log";
private boolean log2File = false;
//end config value
public static void main(String[] args)
{
getEnv();
if(args.length!=2)
{
System.err.println("error: there should be two arguments.");
return;
}
configFile = args[0];
configHeadFile = args[1];
System.out.println("The config file is "+configFile);
System.out.println("The 11073 header file is "+ configHeadFile );
Main amain=new Main();
if ( amain.getXmlValue() )
amain.gen11073File();
}
private boolean getXmlValue()
{
SAXReader saxReader = new SAXReader();
try {
FileInputStream inFile=new FileInputStream( new File(configFile) );
Document phdDoc = saxReader.read( inFile );
Element rootEle = phdDoc.getRootElement();
Attribute attr = rootEle.attribute("homeDir");
if( attr != null )
{
homeDir = attr.getValue();
}
attr = rootEle.attribute("managersystemid");
if( attr != null )
{
String str;
if( (str=getManagerSystemID (attr.getValue().trim() )) == null )
{
System.err.println("error:manager system ID is incorrect.");
return false;
}
else
managersystemid = str;
}
attr = rootEle.attribute("nomenclature");
if( attr != null )
{
if( attr.getValue().compareToIgnoreCase("true") == 0 )
nomenclature = true;
else
nomenclature = false;
}
attr = rootEle.attribute("log2File");
if( attr != null )
{
if( attr.getValue().compareToIgnoreCase("true") == 0 )
log2File = true;
else
log2File = false;
}
attr = rootEle.attribute("logFileName");
if( attr != null )
logFileName = attr.getValue();
attr = rootEle.attribute("blabLevel");
if( attr != null )
blabLevel = attr.getValue();
Element sqliteEle = rootEle.element("sqlite");
if( sqliteEle != null )
{
attr = sqliteEle.attribute("dbFileName");
if( attr != null )
dbFileName = attr.getValue();
attr = sqliteEle.attribute("sqLiteDB");
if( attr != null )
{
if( attr.getValue().compareToIgnoreCase("true") == 0 )
sqLiteDB = true;
else
sqLiteDB = false;
}
}
sqliteEle = null;
Element transportEle = rootEle.element("transport");
if( transportEle != null )
{
attr = transportEle.attribute("tcpTransport");
if( attr != null )
{
if( attr.getValue().compareToIgnoreCase("true") == 0 )
tcpTransport = true;
else
tcpTransport = false;
}
attr = transportEle.attribute("usbTransport");
if( attr != null )
{
if( attr.getValue().compareToIgnoreCase("true") == 0 )
usbTransport = true;
else
usbTransport = false;
}
attr = transportEle.attribute("tcpPort");
if( attr != null )
tcpPort = attr.getValue();
}
inFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
private String getManagerSystemID(final String strIn )
{
StringBuilder outSB=new StringBuilder();
if( strIn.length()!= 39 )
return null;
int outFirst=0;
int outEnd=0;
do{
++outEnd;
if( outEnd - outFirst == 4 )
{
if( strIn.charAt(outFirst)=='0'
&& strIn.charAt( outFirst+1 ) == 'x'
&& ( strIn.charAt( outFirst+2 ) >= '0' && strIn.charAt( outFirst+2 )<='F' )
&& ( strIn.charAt( outFirst+3 ) >= '0' && strIn.charAt( outFirst+3 )<='F' )
)
{
outSB.append("\\");
outSB.append(strIn.charAt( outFirst+1 ));
outSB.append(strIn.charAt( outFirst+2 ));
outSB.append(strIn.charAt( outFirst+3 ));
++outEnd;
outFirst = outEnd;
}
else
return null;
}
}while( outEnd<strIn.length() );
return outSB.toString();
}
private void gen11073File()
{
File file=new File(configHeadFile);
if( !file.exists() )
{
try {
file.createNewFile();
} catch (IOException e1) {
System.err.println("error: "+configHeadFile+" can't be created.");
return;
}
}
if(!file.canWrite())
{
System.err.println("error: "+configHeadFile+" can't be written.");
return;
}
FileOutputStream fileOut = null;
try {
fileOut=new FileOutputStream(file, false);
} catch (FileNotFoundException e1) {
System.err.println("error: "+configHeadFile+" is deleted.");
return;
}
PrintStream ps=new PrintStream(fileOut);
ps.println("#if !defined(__11073Config_h)");
ps.println("#define __11073Config_h");
//ps.println("#include \"Utils/Errors.h\"");
ps.println("#ifdef __cplusplus");
ps.println("extern \"C\"{");
ps.println("#endif");
ps.println();
ps.println("#define _11073_HOME_DIR " + "\""+homeDir+"\"");
if(nomenclature)
ps.println("#define _11073_CFG_REMOVE_NOMENCLATURE ");
else
ps.println("#undef _11073_CFG_REMOVE_NOMENCLATURE " );
if ( log2File )
{
ps.println("#define _11073_LOG_FILENAME " + "\"" + logFileName + "\"" );
}
else
ps.println("#define _11073_LOG_FILENAME NULL" );
if(sqLiteDB)
ps.println("#define _11073_CFG_ENABLE_DB ");
else
ps.println("#undef _11073_CFG_ENABLE_DB ");
ps.println("#define _11073_DB_FILENAME " + "\"" + dbFileName + "\"");
if( tcpTransport )
ps.println("#define _11073_CFG_ENABLE_TCP_TRANSPORT ");
else
ps.println("#undef _11073_CFG_ENABLE_TCP_TRANSPORT ");
ps.println("#define _11073_TCP_PORT " + tcpPort);
if(usbTransport)
ps.println("#define _11073_CFG_ENABLE_USB_TRANSPORT");
else
ps.println("#undef _11073_CFG_ENABLE_USB_TRANSPORT");
ps.println("#define _11073_MAX_CACHED_REPORTS " + maxCachedReports);
ps.println("#define _11073_TCP_INTERFACE NULL");
ps.println("#define _11073_MANAGER_SYSTEM_ID " + "\"" + managersystemid + "\"" );
ps.println("#define _11073_MANAGER_ASSOC_VER asn_AssociationVersion_assoc_version1");
ps.println();
ps.println("#ifdef __cplusplus");
ps.println("}");
ps.println("#endif");
ps.println();
ps.println("#endif");
ps.close();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.