使用common-configuration讀取xml,properties檔案

來源:互聯網
上載者:User

http://commons.apache.org/configuration/apidocs/index.html
Commons Configuration provides a generic configuration interface which enables a Java application to

read configuration data from a variety of sources.

PropertiesConfiguration Loads configuration values from a properties file.
XMLConfiguration Takes values from an XML document.
INIConfiguration Loads the values from a .ini file as used by Windows.
PropertyListConfiguration Loads values from an OpenStep .plist file. XMLPropertyListConfiguration is

also available to read the XML variant used by Mac OS X.
JNDIConfiguration Using a key in the JNDI tree, can retrieve values as configuration properties.
BaseConfiguration An in-memory method of populating a Configuration object.
HierarchicalConfiguration An in-memory Configuration object that is able to deal with complex

structured data.
SystemConfiguration A configuration using the system properties
ConfigurationConverter Takes a java.util.Properties or an

org.apache.commons.collections.ExtendedProperties and converts it to a Configuration object.

1.讀取XML檔案中內容

import java.util.List;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.XMLConfiguration;

public class XmlConfigurationExample {

 public static void main(String[] args) throws Exception {
  String resource = "com/discursive/jccook/configuration/global.xml";
  Configuration config = new XMLConfiguration(resource);
  //只有new一個XMLConfiguration的執行個體就可以了.
  List startCriteria = config.getList("start-criteria.criteria");
  int horsepower = config.getInt("horsepower");
  System.out.println( "Start Criteria: " + startCriteria );
  System.out.println(horsepower);
 }
}
global.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<engine-config>
 <start-criteria>
  <criteria>
   Temperature Above -10 Celsius
  </criteria>
  <criteria>
   Fuel tank is not empty
  </criteria>
 </start-criteria>
 <volume>4 Liters</volume>
 <horsepower>42</horsepower>
</engine-config>

2.讀取properties檔案

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.PropertiesConfiguration;

public class PropertiesConfigurationExample {

 public static void main(String[] args) throws Exception  {
  Configuration config = new PropertiesConfiguration(

"com/discursive/jccook/configuration/global.properties" );
  
  System.out.println( "Speed: " + config.getFloat("speed"));
  System.out.println( "Names: " + config.getString("name"));
  }
}
global.properties:

threads.maximum=50
threads.minimum=20
timeout=15.52
interactive=true
color=red
speed=50
name=Default User
email=default@email.com
region=Earth

3.當有多個設定檔時,就利用ConfigurationFactory對象來訪問多個不同的配置資源

ConfigurationFactory可以組合多個配置資源。然後我們就可以像訪問單個資源檔一樣來訪問他們中的屬性。首

先,我們需要建立一個xml檔案來告訴工廠哪些檔案將要被載入。下面是一個例:
 <?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
  <properties fileName="usergui.properties"/>
</configuration>
ConfigurationFactory的定義檔案是一個普通的xml檔案.根項目是configuration.他飽含的子項目制定了需要裝載

的配置資源.properties是元素之一,他用來包含屬性檔案

import java.net.URL;
import java.util.List;

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationFactory;

public class PropertiesXmlConfigurationExample {

 public static void main(String[] args) throws Exception {
  PropertiesXmlConfigurationExample example = new PropertiesXmlConfigurationExample();

  ConfigurationFactory factory = new ConfigurationFactory();
  URL configURL = example.getClass().getResource("additional-xml-configuration.xml");
  factory.setConfigurationURL( configURL );
  
  Configuration config = factory.getConfiguration();
  
  List startCriteria = config.getList("start-criteria.criteria");
  System.out.println( "Start Criteria: " + startCriteria );
  
  int horsepower = config.getInt("horsepower");
  System.out.println( "Horsepower: " + horsepower );
 }
}

additional-xml-configuration.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
  <properties fileName="global.properties"/>
  <xml fileName="global.xml"/>
</configuration>

 

或者採用另外一種方法:  用到了:CompositeConfiguration,手動加上兩個設定檔
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.XMLConfiguration;

public class Test {

 /**
  * @param args
  * @throws ConfigurationException
  */
 public static void main(String[] args) throws ConfigurationException {
  // TODO Auto-generated method stub
  CompositeConfiguration config = new CompositeConfiguration();
  config.addConfiguration(new PropertiesConfiguration(

"com/discursive/jccook/configuration/global.properties" ));
  config.addConfiguration( new XMLConfiguration

("com/discursive/jccook/configuration/global.xml"));
  List startCriteria = config.getList("start-criteria.criteria");
  int horsepower = config.getInt("horsepower");
  System.out.println( "Start Criteria: " + startCriteria );
  System.out.println(horsepower);
  
  System.out.println( "Speed: " + config.getFloat("speed"));
  System.out.println( "Names: " + config.getString("name"));

 }

}

4.但有點問題:
讀取xml格式時,xml檔案必須滿足特定的格式.
對於<VALIDITY  value="test"  />  像這樣的不知怎麼取得其值????
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.