占用空间小的XML库

时间:2011-04-19 06:13:30

标签: java xml configuration jaxb

由于配置复杂性增加,我想为我的库的配置文件引入XML,并替换现有的属性文件。

我想

  • 使用XSD公开描述XML结构(因此结构已记录并可进行版本控制)
  • 如果可能,从该XSD生成Java源代码以进行解组(例如使用JAXB / XJC)。另一种简单的访问方法也可以(例如简单的XPath表达式)
  • 占地面积小,很少甚至没有额外的依赖

如果足迹不是问题,我会马上选择JAXB。是否有类似的库,占地面积较小?

编辑:根据占用空间,我并不是指消耗内存,而是以KB为单位的库的“大小”/类的数量。我希望我的相当简单的用例可以被一个大约5-6个类的库所覆盖。我不需要JAXB的全部功能。

3 个答案:

答案 0 :(得分:3)

JAXB是足迹不足

JAXB(JSR-222)实现也作为Java SE 6的一部分包含在内。生成的类只是带有必要注释的POJO。在下面的问题中,海报观察到XMLBeans类比JAXB类大四倍。

减少课程数量

如果从Java类开始(而不是从XML模式生成它们),通常可以使模型更小。使用@XmlWrapperElement可以帮助消除类。

进一步减少课程数量

您可以在EclipseLink JAXB (MOXy)中使用@XmlPath注释,请注意我是技术主管。它利用XPath扩展JAXB映射:

答案 1 :(得分:2)

对于零依赖关系解决方案,请使用属于每个Java VM的DOM或SAX解析器。

如果您想要Java类型绑定,请坚持使用JAXB。即使你找到一个较小的库,你也会因为使用非标准的解决方案而没有经过广泛测试,或者有许多知道如何使用它的开发人员。

答案 2 :(得分:1)

如果您愿意考虑使用非XML技术,那么您可能需要查看我的Config4J库(www.config4star.org)。将它与您的愿望清单进行比较......

  • 它提供了一种易于使用的模式语言。

  • jar文件很小(102KB),没有外部依赖。

  • 您的愿望清单中缺少的一个功能是从架构定义自动生成Java类的工具。但是,Config4J的API很简单,我不确定你是否需要这样的代码生成器。 实用使用指南手册的第III部分( Config4JMS案例研究)描述了一种用于构建类似Spring的库以从配置信息创建Java对象的技术。