我需要一种方法将POJO对象绑定到外部实体,可以是XML,YAML,结构化文本或易于编写和维护的任何内容,以便为单元测试和TDD创建模拟数据。下面是我尝试过的一些库,但是他们遇到的主要问题是我被卡住了(至少3个月)到Java 1.4。我希望获得关于我可以使用的任何见解,并尽可能降低开销和前期设置(如使用Schema或DTD),而不使用复杂的XML。这里是图书馆我真的很喜欢(但显然不能与1.4工作或不支持的构造 - 你总得有制定者):我可以使用哪些库将POJO绑定到TDD的外部文件,而无需太多开销?
RE-JAXB(或非常简单的Java XML绑定)
http://jvalentino.blogspot.com/2008/07/in-response-to-easiest-java-xml-binding.html http://sourceforge.net/projects/rejaxb/
Seamlessy结合本:
<item>
<title>Astronauts' Dirty Laundry</title>
<link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>
<description>Compared to earlier spacecraft, the International Space
Station has many luxuries, but laundry facilities are not one of them.
Instead, astronauts have other options.</description>
<pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
<guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
</item>
更改为:
@ClassXmlNodeName("item")
public class Item {
private String title;
private String link;
private String description;
private String pubDate;
private String guid;
//getters and settings go here...
}
使用:
Rss rss = new Rss();
XmlBinderFactory.newInstance().bind(rss, new File("Rss2Test.xml"));
问题:它依赖于注解,所以没有很好的Java 1.4
jYaml http://jyaml.sourceforge.net/
无缝结合本:
--- !user
name: Felipe Coury
password: felipe
modules:
- !module
id: 1
name: Main Menu
admin: !user
name: Admin
password: password
要这样:
public class User {
private String name;
private String password;
private List modules;
}
public class Module {
private int id;
private String name;
private User admin;
}
使用:
YamlReader reader = new YamlReader(new FileReader("example.yaml"));
reader.getConfig().setClassTag("user", User.class);
reader.getConfig().setClassTag("module", Module.class);
User user = (User) reader.read(User.class);
问题:它不会与构造工作(所以没有良好的不可变对象)。我不得不改变我的对象或编写处理YAML解析的自定义代码。请记住,我想避免 - 尽可能地 - 写数据描述符,我想要一些“正常工作”的东西。
你有什么建议吗?
只是简单地看了看,并且它看起来很简单,我会看得更远。现在感谢。 – kolrie 2008-10-12 17:00:06