使用Input Stream从XML文件中读取属性?

时间:2016-04-19 11:47:58

标签: java xml properties static inputstream

目前在我的Java应用程序中,我使用以下Class来检索properties文件(application.properties)中的值:

public class MyProperties {
    private static Properties defaultProps = new Properties();
    static {
        try {

            java.io.InputStream in= MyProperties.class.getClassLoader().getResourceAsStream("application.properties");
            defaultProps.load(in);
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static String getProperty(String key) {
        return defaultProps.getProperty(key);
    }
}

使用int类实例化MyProperties的示例:

int maxNumberOfPeople = Integer.parseInt(MyProperties.getProperty("maximumPeople"));

我想更改此类以便阅读XML属性文件,而不是例如application.Properties。

我该怎么做,仍然能够使用MyProperties类来实例化值?

1 个答案:

答案 0 :(得分:2)

阅读Properties.loadFromXML(...)方法的javadoc

方法摘要:

  

将指定输入流上的XML文档表示的所有属性加载到此属性表中。

Properties javadoc包含XML文档(文件)的DTD。

最好使用try-with-resources这样编写你的加载器:

try (java.io.InputStream in = MyProperties.class.getClassLoader().
            getResourceAsStream("application.properties")) {
    // load properties
} catch (Exception e) {
    e.printStackTrace();
}

此外,抓住并压制像这样的例外是一个坏主意。

  1. 不要抓住Exception
  2. 如果无法加载属性,您很可能希望应用程序“拯救”。
  3. 最后,您可能不应该在静态初始化程序中加载属性,因为这使您无法处理可能出现的任何异常。

相关问题