如何通过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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值