Как я могу прочитать файл свойств и вставить данные в файл XML? - PullRequest
0 голосов
/ 28 июля 2011

У меня есть файл свойств с данными для подключения к базе данных.Кроме того, у меня есть файл конфигурации Hibernate.Я хотел бы настроить файл гибернации со свойствами из файла свойств.Как я мог прочитать свойства и вставить их в файл XML?Я могу прочитать свойства через System.getProperty (имя).

Спасибо!

Ответы [ 3 ]

1 голос
/ 28 июля 2011

Пусть это будет хорошим началом:

File xmlfile = null;
File propertiesfile = null;
Properties p = new Properties();
p.load(new FileReader(propertiesfile));

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document parse = db.parse(xmlfile);
DOMSource domSource = new DOMSource(parse);
Node root = domSource.getNode();
for (Object key : p.keySet()) {
    String sKey = "" + key;
    root.setTextContent(root.getTextContent()+sKey + "=" + p.getProperty(sKey));
}
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.transform(domSource, new StreamResult(xmlfile));
0 голосов
/ 28 июля 2011

Если я правильно понимаю документацию, она должна работать "из коробки":

Ссылка на Hibernate

3.7.XML-файл конфигурации

Альтернативный подход к настройке - указать полную конфигурацию в файле с именем hibernate.cfg.xml.Этот файл можно использовать в качестве замены для файла hibernate.properties или, если они есть, для переопределения свойств.

Таким образом, вам нужен только файл свойств hibernate и файл hibernate.cfg.xml.Если вы не установите значения в hibernate.cfg.xml, они будут взяты из файла свойств.- Я не доказал это, но так я понимаю документацию.

0 голосов
/ 28 июля 2011

Если вам не придется делать это повторно, я бы использовал эту древнюю технику программирования:

  • Открыть файл свойств
  • Выделите свойство в файле свойств
  • Ctrl c
  • Открыть XML-файл конфигурации hibernate
  • Найти карат вставки в месте значения свойства
  • Ctrl v
...