2016-04-19 2 views
0

В настоящее время в моей Java Application У меня есть следующие Class, что я использую для того, чтобы извлекать значения из моего properties файла (application.properties):Чтение свойств из XML-файла с использованием входного потока?

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?

+0

Посмотрите здесь: http://www.javaworld.com/article/2072602/java-properties-in-xml.html –

+0

поставил вопрос как «слишком широкий». Существуют и другие способы сделать это (основанное на мнениях). Попробуйте что-нибудь, и если это не сработает, отправьте этот код и ошибку, с которой вы столкнулись. – Reinard

ответ

2

Прочитано javadoc для метода Properties.loadFromXML(...).

Резюме Метод:

Грузы все из свойств, представленных в документе XML на указанном входном потоке в этой таблице свойств.

Properties javadoc включает DTD для XML-документа (файла).


Было бы лучше, чтобы написать свой загрузчик с помощью Try-с-ресурсами, как это:

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

Кроме того, это плохая идея, чтобы поймать и исключения сквош, как это.

  1. Не поймать Exception.
  2. Если свойства не загружены, вы, скорее всего, хотите, чтобы приложение «выручало».

Наконец, вы, вероятно, не должны загружать свойства в статическом инициализаторе, потому что это не дает вам никакого чистого способа справиться с любыми исключениями, которые могут возникнуть.

Смежные вопросы