java - Properties.loadFromXML() 和 Properties.storeToXML() 方法的目的是什么?

标签 java xml properties

我正在设计一个处理属性文件的简单库。

我注意到自 JRE 1.5 以来,类 Properties定义如下方法:

public synchronized void loadFromXML(InputStream in)
public void storeToXML(OutputStream os, String comment)

我怀疑这是对此类 API 的真正增强。自 JRE 1.5 以来,属性文件一直是基于文本的文件,并且新引入的 XML 格式没有添加任何功能,除了可以使用不同的格式之外

  1. 更详细
  2. 更复杂(理解、改变、解析)
  3. 效率更低(它在内部使用 dom 来解析为 hastable:它消耗更多内存,在实现中需要辅助类,而且很可能也更慢)
  4. 更脆弱(xml 需要转义字符 <>&"' 而属性只需要转义反斜杠,因为它也支持 Java 反斜杠转义)
  5. 它破坏了使用它的程序的向后兼容性,因为运行 JDK 1.4 的用户将无法读取 xml 属性。 (好的,谁在乎...)

所以我无法理解为什么Sun的工程师添加这个功能的背后原因。

问题是:

Does anybody finds some advantage of using an XML-based properties files over a traditional text based one?

我需要评估这个问题,因为我不想向我之前引用的简单库添加无用的功能。

Did you ever used an XML-based properties file over a Java Properties file? And why?

注意:对于 Log4J xml 文件格式也可以提出同样的问题,但至少 Log4J xml 格式增加了嵌套能力和某种具有一定意义的语法,我确实理解这一点。但是对于属性的这种 xml 格式,我不知道。

最佳答案

如果留在 Java 环境中,使用 Java 属性文件效果很好。即使您希望其他编程语言与您的库交互,您也可能会接受“常规”属性文件。但是,对于分层数据,XML 是标准。您可能希望支持此更改的原因,也可能是 Sun 将其包括在内的原因,是其他编程语言具有用于解析 XML 文件以获取分层数据的扩展库。

我之所以回答是因为我以前确实使用过这个功能!但不是出于一个很好的理由。在我现在正在开发的一个程序中,我发现最简单的方法是将一组数据保存在一个属性对象中,然后将该对象输出为 XML,以便以后可以由 Python 读取。目前,数据在 Python 脚本中进一步操作,并将更多子项添加到 XML 文件中。如果不能轻松地输出到 XML,这会更痛苦一些。 如果我有时间,我不会费心输出到 XML。我使用包含 XML 的 Python 代码的主要原因是其他人编写了它,我暂时使用它,直到我有时间重新评估我的程序的那部分并重新编码。

所以使用 XML 是有原因的!这不是一个很好的,但这是一个原因。 我想还有其他类似的情况,其中将属性输出为 XML 有助于与其他语言兼容,因为大多数语言都有强大的 XML 解析库,并且它可以更轻松地操作分层数据。在科学编程中,您似乎很少能享受到坚持使用一种语言的奢侈。

关于java - Properties.loadFromXML() 和 Properties.storeToXML() 方法的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14470763/

相关文章:

c++ - Dom 与 Sax - 创建 Xml

java - 从使用其他 xsd 的 xsd 以编程方式生成 xml

c# - 何时使用属性以及何时在内部类上使用内部变量的策略?

c# - 如何在 C# 中使用 ref 属性

java - Android openFileInput 导致 FileNotFound

java - 为什么 WebView -> onPause 只在第一次工作?

java - 关于使用 hashset 定义新集合的问题

java - Scala 符号到 java 枚举

android - 在 Android 中,是否可以设置 drawable 的边距?

javascript - console.log 中的 %j 说明符不包括某些属性