Victoria Seniuk Victoria Seniuk -4 years ago 128
Java Question

Xml structure with XStream

I have class:

public class EnglishWord implements Serializable, Comparable,
Cloneable {
static Logger logger = Logger.getLogger(EnglishWord.class);

private static final long serialVersionUID = -5832989302176618764L;
private String word;// in lowercase if not personal name
private int occurenceNumber = 1;// 0,1,2,3,
private int rating;// 1-first, 2 - second...
private Set<String> builtFrom;
private String translation;
private boolean isVerb;
private boolean isNoun;
private boolean isIrregular;


I have Set words = new TreeSet();
And I use XStream for serialization:

XStream xs = new XStream();
xs.alias("englishWord", EnglishWord.class);
FileOutputStream fs = null;
try {
fs = new FileOutputStream(fileName);
} catch (FileNotFoundException e) {
xs.toXML(words, fs);
try {
} catch (IOException e) {

After this I get structure of file like this:

<word >the </word >
<occurenceNumber >7480 </occurenceNumber >
<rating >1 </rating >
<builtFrom class="tree-set" >
<no-comparator/ >
<string >The </string >
<string >the </string >
</builtFrom >
<isVerb >false </isVerb >
<isNoun >false </isNoun >
<isIrregular >false </isIrregular >

Can I get something like this with XStream:

<englishWord word="the" occurenceNumber="7480" rating="1" isVerb="true">
<builtFrom class="tree-set" >
<no-comparator/ >
<string >The </string >
<string >the </string >
</builtFrom >
</englishWord >


Recommended for you: Get network issues from WhatsUp Gold. Not end users.
Answer Source

To convert them to attributes try the following:

xs.useAttributeFor(EnglishWord.class, "word");
xs.useAttributeFor(EnglishWord.class, "occurenceNumber");
xs.useAttributeFor(EnglishWord.class, "rating");
xs.useAttributeFor(EnglishWord.class, "isVerb");
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download
Latest added