package net.sourceforge.phpeclipse.wiki.xml; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class XStreamManager { public static String toXML(Page page) { XStream xstream = new XStream(new DomDriver()); xstream.alias("page", Page.class); xstream.changeDefaultConverter(new PageConverter(xstream.getClassMapper(), "revision")); xstream.alias("revision", Revision.class); return xstream.toXML(page); } public static Page fromXML(String xmlString) { XStream xstream = new XStream(new DomDriver()); xstream.alias("page", Page.class); xstream.changeDefaultConverter(new PageConverter(xstream.getClassMapper(), "revision")); xstream.alias("revision", Revision.class); return (Page) xstream.fromXML(xmlString); } public static Page fromXML(Reader xmlReader) { XStream xstream = new XStream(new DomDriver()); xstream.alias("page", Page.class); xstream.changeDefaultConverter(new PageConverter(xstream.getClassMapper(), "revision")); xstream.alias("revision", Revision.class); return (Page) xstream.fromXML(xmlReader); } public static Page fromXML(InputStream iStream) { InputStreamReader sReader = new InputStreamReader(iStream); return fromXML(sReader); } public static void main(String[] args) { Page page = new Page("20050129", "title", "body1"); page.add(new Revision("20050130", "body2", "Joe")); page.add(new Revision("20050131", "body3")); String xml = toXML(page); System.out.println(xml); Page newXML = (Page) fromXML(xml); System.out.println(newXML); } }