2011-11-16 24 views
1

我正在寻找一种将java对象序列化为XML的方式,格式与spring bean定义相同。例如,类定义为:xml映射的对象格式化为spring bean定义

类FOO的
package x.y.z; 
class foo { 
    String name; 
    int counter; 

    ...setter and getter omitted for simplicity .... 
} 

对象将被序列化为:

<bean id="" class="x.y.z.foo"> 
    <property name="name" value="some random value"/> 
    <property name="counter" value="1" /> 
</bean> 

的目的是,稍后我可以通过拷贝注入物体插入单元测试/粘贴XML到春天的上下文文件。

回答

0

如果您对注释可以使用,像简单XML序列化这样的东西就可以做你想要的东西。我也喜欢XStream,但它可能不会让自己的XML与您的类结构不同。

http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php

你实际上可能是最好只写一个元帅()甚至一荤一带有字符串缓冲区这样的:

public Element marshal() { 
    StringBuffer sb = new StringBuffer(); 
    sb.append("\t<bean id="">\n"); 
     sb.append("\t\t<property name=\"").append(name).append(""/>\n"); 
    sb.append("\t</bean>\n"); 
    InputStream istream = new ByteArrayInputStream(sb.toString().getBytes("UTF-8")); 
    Document myDoc = new SAXBuilder().build(istream); 
} 

或一个更好的建立一个文档,添加元素。

后输出

// Save it to a file: 
    XMLOutputter out = new XMLOutputter(Format.getPrettyFormat()); 
    java.io.FileWriter writer = new java.io.FileWriter(fileName); 
    out.output(document, writer); 
    writer.flush(); 
    writer.close(); 

我想你可能会花更多的时间去配置一个XML序列比你只是一个黑客攻击了,如果你的模式是如此简单,但比你的XML不同。