我正在设计一个处理属性文件的简单库。
我注意到自 JRE 1.5 以来,该类Properties
定义了如下方法:
public synchronized void loadFromXML(InputStream in)
public void storeToXML(OutputStream os, String comment)
我质疑这是对此类 API 的真正增强。自 JRE 1.5 以来,属性文件一直是基于文本的文件,并且新引入的 XML 格式没有向功能添加任何内容,除了可以使用不同的格式,即
- 更详细
- 更复杂(理解、改变、解析)
- 效率更低(它在内部使用 dom 来解析为 hastable:它消耗更多内存,在实现中需要辅助类,并且很可能也更慢)
- 更脆弱(xml 需要转义字符 <>&"' 而属性只需要转义反斜杠,因为它还支持 Java 反斜杠转义)
- 它破坏了使用它的程序的向后兼容性,因为运行 JDK 1.4 的用户将无法读取 xml 属性。(好吧,谁在乎……)
所以我无法理解 Sun 的工程师添加此功能的原因。
问题是:
有没有人发现使用基于 XML 的属性文件优于传统的基于文本的属性文件?
我需要评估这个问题,因为我不想在我之前引用的简单库中添加无用的功能。
您是否曾经在 Java 属性文件上使用过基于 XML 的属性文件?为什么?
注意:可以对 Log4J xml 文件格式提出同样的问题,但至少 Log4J xml 格式增加了嵌套能力和某种有意义的语法,我明白这一点。但是对于属性的这种 xml 格式,我没有。