Свойства Java: файлы .properties против xml?

22
задан codeforester 5 October 2017 в 23:29
поделиться

6 ответов

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

Было бы разумно сохранить ваш интерфейс конфигурации как можно более общим. тем не мение,

20
ответ дан 29 November 2019 в 04:09
поделиться

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

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

15
ответ дан 29 November 2019 в 04:09
поделиться

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

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

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

connection1=this
connection2=that
connection3=the other

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

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

9
ответ дан 29 November 2019 в 04:09
поделиться

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

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

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

1
ответ дан 29 November 2019 в 04:09
поделиться

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

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

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

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

1
ответ дан 29 November 2019 в 04:09
поделиться

Если у вас есть и иерархические данные, и повторяющиеся пространства имен, используйте 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

Однако нумерация свойств с одним и тем же именем по-прежнему не поддерживает определенные отношения родитель-потомок. т.е. как мы представляем, будет ли Бэтгерл с Джокером или Бэтменом?

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

[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
ответ дан 29 November 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: