For instance I have two user accounts: a sender and recipient. Each of them has its own login and password to be used. And these fields are kept in xml config files like this:
<SenderData>
<login>awesomeLogin</login>
<password>awesomePass</password>
</SenderData>
In my tests I created Account class and I want to put there either sender or recipient data:
@XStreamAlias("SenderData")
public class Account {
private String login, password;
}
I load required data from xml using com.thoughtworks.xstream @XStream
and its alias, annotating the class with @XStreamAlias("SenderData")
annotation.
It works perfectly for one specific xml source file, but if I have several xml sources (sender and recipient here) how can I load appropriate data using @XStream? To be clear, my goal is to have two objects of one Account class, something like this:
Account sender = myXstream.load("SenderData", Account.class); //works!
Account recipient = myXstream.load("RecipientData", Account.class);//doesn't work
- the last will not work as I can put only one @XStreamAlias("SenderData")
annotation to Account class
Assuming you have to load thoses XML, and using xstream-distribution-1.4.9
1.first xml (recipient.xml)
<RecipientData>
<login>naLogin</login>
<password>anaPass</password>
</RecipientData>
2. second XML (sender.xml)
<SenderData>
<login>awesomeLogin</login>
<password>awesomePass</password>
</SenderData>
With this Account class :
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("SenderData")
public class Account {
private String login, password;
public String getLogin() {
return login;
}
/*public void setLogin(String login) {
this.login = login;
}*/
public String getPassword() {
return password;
}
/*public void setPassword(String password) {
this.password = password;
}*/
public void toPtring(){
System.out.println("login="+this.getLogin());
System.out.println("pass="+this.getPassword());
}
}
and test class :
public class maintest {
public static void main(String args[]) throws FileNotFoundException{
XStream xstream = new XStream();
xstream.alias("SenderData", Account.class);
FileReader r = new FileReader("sender.xml");
Account sender=(Account)xstream.fromXML(r);
sender.toPtring();
xstream.alias("RecipientData", Account.class);
FileReader r2 = new FileReader("recipient.xml");
Account recipient=(Account)xstream.fromXML(r2);
recipient.toPtring();
}
}
its works. like this result
login=awesomeLogin
pass=awesomePass
login=naLogin
pass=anaPass
Look at you code to see if you didn't forget something