Подтвердить что ты не робот

Свойства Java:.properties files vs xml?

Я новичок, когда дело доходит до свойств, и я читал, что XML является предпочтительным способом их хранения. Однако я заметил, что запись обычного файла .properties в стиле

foo=bar
fu=baz

также работает. Это означало бы намного меньше печатать (и, возможно, легче читать и более эффективно). Каковы преимущества использования XML файла?

4b9b3361

Ответ 1

В XML вы можете хранить более сложные (например, иерархические) данные, чем в файле свойств. Так что это зависит от вашего использования. Если вы просто хотите сохранить небольшое количество прямых свойств, файл свойств легче обрабатывать (хотя класс свойств Java также может читать свойства, основанные на XML).

Было бы разумно сохранить ваш интерфейс конфигурации как можно более универсальным, так что вам не придется переключаться на другое представление (например, используя Apache Commons Configuration), если вам нужно.

Ответ 2

Самое большое преимущество использования XML файла заключается в том, что XML объявляет его кодировку, а .properties - нет.

Если вы переводите эти файлы свойств на N языков, возможно, что эти файлы могут возвращаться в N разных кодировках. И если вы не будете осторожны, вы или кто-то другой можете необратимо испортить кодировки символов.

Ответ 3

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

<connections>
  <connection>this</connection>
  <connection>that</connection>
  <connection>the other</connection>
</connections>

чем обрабатывать

connection1=this
connection2=that
connection3=the other

особенно если вы ожидаете хранить много данных или должны храниться в определенной иерархии

Если вы просто сохраняете несколько скалярных значений, я бы выбрал простой подход к свойствам каждый раз

Ответ 4

Если у вас есть как иерархические данные, так и дубликаты пространств имен, используйте XML.

1) Чтобы эмулировать только иерархическую структуру в файле свойств, просто используйте точечную нотацию:

a.b=The Joker
a.b.c=Batgirl
a.b=Batman
a.b=Superman
a.b.c=Supergirl

Таким образом, сложное (иерархическое) представление данных * не является основанием для использования xml.

2) Для просто повторения данных мы можем использовать стороннюю библиотеку, такую ​​как ini4j, чтобы явно указать в java идентификатор подсчета в неявном квантификаторе в самом файле свойств.

a.b=The Joker
a.b=Batgirl
a.b=Batman

переводится на (в фоновом режиме)

a.b1=The Joker
a.b2=Batgirl
a.b3=Batman

Однако при нумерации свойств имени еще не поддерживаются конкретные отношения родитель-потомок. то есть. как мы представляем, есть ли Batgirl с The Joker или Batman?

Итак, xml требуется, когда нужны обе функции. Теперь мы можем решить, является ли первая запись xml тем, что мы хотим, или 2-й.

[a]
   [b]Joker[/b]
   [b]
       [c]Batgirl[/c]
   [/b]
[a]

- или -

[a]
   [b]Batman[/b]
   [b]
       [c]Batgirl[/c]
   [/b]
[/a]

Подробнее...         http://ilupper.blogspot.com/2010/05/xml-vs-properties.html

Ответ 5

XML удобен для сложных структур данных и/или отношений. Он выполняет достойную работу за "общий язык" между системами.

Однако xml стоит дорого. Его тяжело потреблять. Вам нужно загрузить парсер, убедиться, что файл находится в правильном формате, найти информацию и т.д.

В то время как файлы свойств довольно легкие и легко читаются. Работает для простых пар ключ/значение.

Ответ 6

Это зависит от данных, которые вы кодируете. С помощью XML вы можете определить более сложное представление данных конфигурации в своем приложении. Возьмите что-то вроде рамки struts в качестве примера. В рамках вы имеете ряд классов Action, которые могут содержать 1... n количество передовых ветвей. В файле конфигурации XML вы можете определить его как:

<action class="MyActionClass">
  <forward name="prev" targetAction="..."/>
  <forward name="next" targetAction="..."/>
  <forward name="help" targetAction="..."/>
</action>

Такая ассоциация трудно выполнить, используя только парное представление ключа-значения файла свойств. Скорее всего, вам нужно будет создать разделительный символ, а затем включить все прямые действия в одно свойство, разделенное этим разделительным символом. Это довольно много работы для хакерского решения.

Однако, как вы указали, синтаксис XML может стать бременем, если вы просто хотите указать что-то очень простое, например, установить свойство blah в true.

Ответ 7

Недостатки XML:

  • Трудно читать - теги заставляют его выглядеть более занятым, чем на самом деле.
  • Иерархии и теги затрудняют редактирование и подверженность человеческим ошибкам.
  • Невозможно "добавить" к файлу свойств XML, чтобы ввести новое свойство или предоставить переопределяющее значение для существующего свойства, чтобы выиграл последний. Возможность добавления свойства может быть очень мощной - мы можем реализовать логику управления свойствами вокруг этого, чтобы определенные свойства были "горячими", и нам не нужно перезапускать экземпляр, когда эти изменения

Файл свойств Java решает вышеуказанные проблемы. Согласованные соглашения об именах и точечные нотации могут помочь в решении проблемы иерархии.