如何通过Java DOM4J读取xml文件
2012-09-14 13:54
423 查看
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();
}
}
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();
}
}
相关文章推荐
- JAVA--通过DOM4J的方式读取xml文件简单实例
- 【java】xml文件表建立及读取环境搭建并采用DOM4J完成XML文件导入到数据库
- java如何通过json读取嵌套的json对象
- 在java项目中如何利用Dom4j解析XML文件获取数据
- Java中通过dom4j读取配置文件实现抽象工厂+反射
- java--通过DOM方式对xml文件进行读取的简单实例
- Java通过Dom4j来解析和创建XML文件
- Java中通过dom4j读取配置文件实现抽象工厂+反射
- java,dom4j读取存储xml文件!
- java项目——Dom4j读取XML文件保存orecal数据库
- 通过Dom4J操作(创建、读取和修改)XML文件
- 在Java中如何读取xml文件---DOM解析
- JAVA读取XML文件dom4j实例
- 如何通过js读取xml文件的数据?
- 学习笔记-Java中的xml文件读取之DOM4J解析
- java如何读取xml文件?
- Java如何读取XML文件 具体实现
- java http xml java通过http来访问一个xml文件的读取过程
- Java中通过dom4j读取配置文件实现抽象工厂+反射
- 通过xStream读取xml文件生成Java对象和Java对象生成xml文件