import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.FileConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
/**
* The class is used to parse config file(eg: *.xml file, *.properties file).
* This class is a singleton class, you can use the method newInstance to get
* an instance.
*
* @author Everest 07/09/2009
* @since 1.0
*
*/
public class ConfigUtil {
/** the default xml file to initializer */
private static final String DEFAULT_XML = "everest.xml";
private FileConfiguration config = null;
private static ConfigUtil instance = null;
private ConfigUtil(String configFile) throws ConfigurationException {
if ((config == null) && (configFile.toLowerCase().endsWith(".xml"))) {
config = new XMLConfiguration(configFile);
} else if (configFile.toLowerCase().endsWith("properties")) {
config = new PropertiesConfiguration(configFile);
} else {
config = new XMLConfiguration(DEFAULT_XML);
}
config.setReloadingStrategy(new FileChangedReloadingStrategy());
}
/**
* The method is used to get an instance of ConfigUtil
*
* @param configFile the file will be parsed
* @return An instance of ConfigUtil
* @throws Exception
*/
public static ConfigUtil newInstance(String configFile) throws Exception {
if (instance == null) {
try {
instance = new ConfigUtil(configFile);
} catch (ConfigurationException e) {
throw new Exception("The file:[" + configFile
+ "] can't be parsed", e);
}
}
return instance;
}
/**
* The method is used to return a single value
*
* @param exp what you want to get(XPath Expression)
* @return
*/
public String selectValue(String exp) {
return config.getString(exp);
}
/**
*
* @param exp
* @return
*/
public String[] selectValues(String exp) {
return config.getStringArray(exp);
}
/**public static void main(String[] args) {
try {
ConfigUtil cu = newInstance("everest.xml");
String serv = cu.selectValue("server.ip");
String ip = cu.selectValue("server.port");
System.out.println(serv+":"+ip);
} catch (Exception e) {
e.printStackTrace();
}
}*/
}
示例xml文件:everest.xml
<?xml version="1.0" encoding="utf-8"?>
<everest>
<server>
<ip>192.168.0.1</ip>
<port>8080</port>
</server>
</everest>
注:附件中是需要的相关jar包,需要加到项目的配置路径下