Java属性:.properties文件vs xml?

时间:2009-09-04 16:04:10

标签: java xml properties

对于属性我是新手,我读到XML是存储这些的首选方式。但是我注意到,以

的方式编写了一个常规的.properties文件
foo=bar
fu=baz

也有效。这意味着更少的打字(也许更容易阅读和更高效)。那么使用XML文件有什么好处呢?

7 个答案:

答案 0 :(得分:19)

在XML中,您可以存储比属性文件中更复杂(例如,分层)的数据。所以这取决于你的用例。如果您只想存储少量直接属性,则属性文件更容易处理(尽管Java属性类也可以读取基于XML的属性)。

无论如何,保持配置界面尽可能通用是有意义的,因此如果需要,可以切换到另一个表示(例如,使用Apache Commons Configuration)。

答案 1 :(得分:14)

使用XML文件的最大好处是XML声明了它的编码,而.properties却没有。

如果要将这些属性文件翻译为N种语言,则这些文件可能会以N种不同的编码形式返回。如果你不小心,你或其他人可能会不可逆转地破坏角色编码。

答案 2 :(得分:8)

如果您有大量重复数据,则可以更简单地处理

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

比处理

connection1=this
connection2=that
connection3=the other

特别是如果您希望存储批次数据,或者必须存储在明确的层次结构中

如果你只是存储一些标量值,我每次都会选择简单的属性方法

答案 3 :(得分: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条目是我们想要的还是第二个。

[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

答案 4 :(得分:1)

XML对于复杂的数据结构和/或关系非常方便。它在系统之间拥有“共同语言”的工作做得不错。

然而,xml需要付出代价。它的消耗量很大。您必须加载解析器,确保文件格式正确,找到信息等...

而属性文件非常轻巧且易于阅读。适用于简单的键/值对。

答案 5 :(得分:1)

这取决于您编码的数据。使用XML,您可以在应用程序中定义更复杂的配置数据表示。以struts框架为例。在框架内,您有许多Action类,可以包含1 ... n个前向分支。使用XML配置文件,您可以将其定义为:

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

仅使用属性文件的键值对表示很难实现这种关联。最有可能的是,您需要提出一个分隔符,然后将所有前向动作包含在由此分隔符分隔的单个属性上。对于一个黑客解决方案来说,这是相当多的工作。

然而,正如您所指出的那样,如果您只想表达一些非常简单的内容,例如将功能设置为true,则XML语法会成为负担。

答案 6 :(得分:0)

XML的缺点:

  1. 很难阅读 - 标签让它看起来比实际上更加繁忙
  2. 层次结构和标签使编辑变得困难,更容易出现人为错误
  3. 不可能&#34;追加&#34;到XML属性文件以引入新属性或为现有属性提供覆盖值,以便最后一个获胜。附加属性的能力可能非常强大 - 我们可以围绕此实现属性管理逻辑,以便某些属性是热的&#34;当这些更改
  4. 时,我们不需要重新启动实例

    Java属性文件解决了上述问题。一致的命名约定和点符号可以帮助解决层次结构问题。