To get the XML for a DTO XStream (com.thoughtworks.xstream.XStream) is used, Download the "xstream-1.4.2.jar" jar : Click Here and add into your lib folder.
The Method which returns the XML for the passed DTO:
The UserDto which needs to be converted to XML :
The Test Class to implement the XStream.toXML() method :
The Output XML :
Thats all, how simple XStream is!
Summary:
The Method which returns the XML for the passed DTO:
public static String getDTOasXML(Object dto){ XStream xstream = new XStream(); return xstream.toXML(dto); }
The UserDto which needs to be converted to XML :
public class UserDto{ private Long userId; private String userName; private String userEmail; public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserEmail() { return userEmail; } public void setUserEmail(String userEmail) { this.userEmail = userEmail; } }Note: Notice that the fields are private. XStream doesn't care about the visibility of the fields. No getters or setters are needed. Also, XStream does not limit you to having a default constructor.
The Test Class to implement the XStream.toXML() method :
package in.codeZila.test; import in.codeZila.test.dto.UserDto; import com.thoughtworks.xstream.XStream; public class Test{ /** * Using XStream method toXML():String to generate the XML for the passed DTO object * @param dto * @return dto XML as String */ public static String getDTOasXML(Object dto){ XStream xstream = new XStream(); /** * Now, to make the XML outputted by XStream more concise, * you can create aliases for your custom class names to XML * element names. This is the only type of mapping required to * use XStream and even this is optional. * * Note: This is an optional step. Without it XStream would work fine, * but the XML element names would contain the fully qualified name of * each class (including package) which would bulk up the XML a bit. */ xstream.alias("UserDto", UserDto.class); return xstream.toXML(dto); } public static void main(String[] args) { /** * Instantiate the UserDto and set its variables */ UserDto userDto=new UserDto(); userDto.setUserId(new Long(1)); userDto.setUserName("CodeZila"); userDto.setUserEmail("codezila@codezila.in"); /** * Pass the userDto Object created above as getDTOasXML() argument */ String dtoXml=Test.getDTOasXML(userDto); System.out.println(dtoXml); } }
The Output XML :
Thats all, how simple XStream is!
Summary:
- Create element name to class name aliases for any custom classes using xstream.alias(String elementName, Class cls);
- Convert an object to XML using xstream.toXML(Object obj);
- Convert XML back to an object using xstream.fromXML(String xml);
Your valuable inputs and suggestions are welcomed!