Try using an attribute called fullname in the person tag instead of creating a new child node. And the other way around Let’s enhance the Person with a String representation, that contains all necessary text to recreate the instance:. We use the moveDown and moveUp methods to move in the tree hierarchy, so we can simply moveDown , read the value and moveUp. Note, that attributes will always have to be written and read first.
|Date Added:||19 June 2018|
|File Size:||20.74 Mb|
|Operating Systems:||Windows NT/2000/XP/2003/2003/7/8/10 MacOS 10/X|
|Price:||Free* [*Free Regsitration Required]|
Let’s go for converting a Calendar in a localized string So we make use of an ‘alias’ to change this full class name to something more ‘human’, for example ‘person’. Our converter will receive the Locale in its constructor and we will keep a reference to it in a member variable:. Let’s enhance domdirver Person with a String representation, that contains all necessary text to recreate the instance:.
DomDriver (XStream Core API) – Javadoc Extreme
Now that we have configured a simple class to play with, let’s see what XStream converters can do for us Note, that attributes will always have to be written and read first. The canConvert method is plain simple.
Now let’s convert anything which extends Calendar: Now we tell whoever calls us that we can handle only Person’s and nothing else, including those classes which extends Person. Try using an attribute called fullname in the person tag instead of creating a new child node. Now we can output the data And now let’s domdrver to the unmarshal. While XStream is capable of converting this class without any problem, we write our own custom converter just for demonstration.
But even nicer, our XML is also simplified using the alias dommdriver the Person class. If the implementation of Birthday ensures, that none of its fields could hold a null value and gender contains a valid value, then we could drop the null condition in the marshal method and in unmarshal we could omit the loop as well domxriver the comparison of the tag names:.
Java Examples for com.thoughtworks.xstream.io.xml.DomDriver
Now that we know how the Converter interface works, let’s create a simple calendar converter which uses the locale to convert the information. We use domdriber moveDown and moveUp methods to move in the tree hierarchy, so we can simply moveDownread the value and moveUp.
This time we want to reuse our already written converters for the Person and the Calendar and add an own attribute for the gender. If this is not what you want, change your canConvert method to return true only if class vomdriver GregorianCalendar. And the other way around Domdrier, that in implementation of a SingleValueConverter is required for attributes, since these objects have to be represented by a single string only.
You work on a stream and accessing the value of a tag or its members will close the surrounding tag that is still active when the method is called.
But we reuse the converters registered in XStream for our member fields and handle ioo values:. The unmarshal method ensures the valid value for the gender by throwing a ConversionException for invalid entries. Since the String representation is complete, a nested element is not necessary anymore:. We convert no derived classes this time, since they might have additional fields.