我正在设计一个处理属性文件的简单库。
我注意到,自JRE 1.5以来,类Properties
定义了类似的方法:
public synchronized void loadFromXML(InputStream in)
public void storeToXML(OutputStream os, String comment)
我质疑这是这个类的API的真正增强。自从JRE 1.5基于文本的文件以来,属性文件和新引入的XML格式没有添加任何功能,除了使用不同格式的可能性
所以我无法理解为什么Sun的工程师添加了这个功能的原因。
问题是:
是否有人发现使用基于XML的属性文件优于传统的基于文本的属性文件?
我需要评估这个问题,因为我不想在我之前引用的简单库中添加一个无用的功能。
您是否曾在Java Properties文件中使用过基于XML的属性文件?为什么?
注意:对于Log4J xml文件格式可以提出同样的问题,但至少Log4J xml格式增加了嵌套能力和某种含义的语法,我明白这一点。但是对于属性的这种xml格式,我没有。
答案 0 :(得分:2)
如果保留在Java环境中,使用Java属性文件效果很好。即使您希望其他编程语言与您的库进行交互,您也可以使用“常规”属性文件。但是,对于分层数据,XML是标准。您可能希望支持此更改的原因,以及可能是Sun包含此更改的原因是,其他编程语言具有用于解析分层数据的XML文件的扩展库。
我回答的原因是因为我之前实际使用过此功能!但不是一个很好的理由。在我正在研究的一个程序中,我发现最简单的方法是在属性对象中保存一组数据,然后将对象输出到XML,以便以后可以通过Python读取。目前,数据在Python脚本中进一步处理,并且更多子项被添加到XML文件中。如果不能轻松输出到XML,这将会更加痛苦。 如果我有时间,我不打算输出到XML。我使用接受XML的Python代码的主要原因是因为其他人写了它并且我暂时使用它,直到我有时间重新评估我的程序的那一部分并重新编码它。
因此使用XML是有原因的!这不是一个好的,但这是一个原因 我想在这样的其他情况下,将属性作为XML输出有助于与其他语言兼容,因为大多数语言都有一个强大的XML解析库,它使操作分层数据更容易。在科学编程中,似乎你很少能够坚持使用一种语言。
答案 1 :(得分:1)
有些观点:
但不,我从未见过它实际使用过。
答案 2 :(得分:1)
鼓励使用XML格式,因为编码:(按规格)严格的ASCII用于普通文件(我建议你http://mojo.codehaus.org/native2ascii-maven-plugin/),UTF-8(默认)用于XML属性文件,如{{ 3}}
编辑:请原谅:ISO-8859-1属性普通文件