XStream に次の問題があります。注釈を読み込もうとすると、次の文を使用する必要があります。
xstream.processAnnotations(DataClass .class);
これは、シリアル化するクラスを明示的に定義します。しかし、私のコードでは:
public class Tester {
/**
* @param args
*/
public static void main(String[] args) {
DataClass data = new DataClass();
data.familyName = "Pil";
data.firstName = "Paco";
data.ID = 33;
data.properties.put("one", "1");
data.properties.put("two", "2");
data.properties.put("three", "3");
String xml = getXmlString(data);
System.out.println(xml);
}
public static String getXmlString(Object data) {
String ret = "";
final StringWriter stringWriter = new StringWriter();
XStream xstream = new XStream(new StaxDriver());
xstream.processAnnotations(Object.class);
xstream.marshal(data, new PrettyPrintWriter(stringWriter));
ret = stringWriter.toString();
return ret;
}
}
dataClass は次のとおりです。
@XStreamAlias("data")
public class DataClass {
public Integer ID = 0;
public String firstName = "";
public String familyName = "";
public Map<String, String> properties = null;
public DataClass(){
properties = new HashMap<String,String>();
}
}
私はそのようなものが欲しいです:
public static <T> String getXmlString(T data) {
String ret = "";
final StringWriter stringWriter = new StringWriter();
XStream xstream = new XStream(new StaxDriver());
xstream.processAnnotations(T.class);
xstream.marshal(data, new PrettyPrintWriter(stringWriter));
ret = stringWriter.toString();
return ret;
}
しかし、うまくいきません。
私がやろうとしていることは可能かどうか誰にも分かりますか?