2011-11-16 47 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不同。