2016-05-27 1 views
0

たとえば、私は2つのユーザーアカウントを持っています:送信者と受信者です。それぞれには、使用する独自のログインとパスワードがあります。そして、これらのフィールドは、このようなXML設定ファイルに保存されています。私のテストではXStreamを使用して、さまざまなxmlファイルのデータを1つのJavaクラスにロードできますか?

<SenderData> 
    <login>awesomeLogin</login> 
    <password>awesomePass</password> 
</SenderData> 

私はAccountクラスを作成し、私はそこに、送信者や受信者のデータのいずれかを入れたい:

@XStreamAlias("SenderData") 
public class Account { 
    private String login, password; 
} 

私はから必要なデータをロードxmlにcom.thoughtworks.xstream @XStreamとそのエイリアスを使用し、クラスに@XStreamAlias("SenderData")アノテーションを付けてアノテーションを付けます。

これは特定のxmlソースファイルに対して完全に機能しますが、複数のxmlソース(ここでは送信者と受信者)がある場合、@XStreamを使用して適切なデータをロードするにはどうすればよいですか? - 私はと仮定すると、クラスに

答えて

1

をアカウントに一つだけ@XStreamAlias("SenderData")注釈を置くことができるよう、最後は動作しません

Account sender = myXstream.load("SenderData", Account.class); //works! 
Account recipient = myXstream.load("RecipientData", Account.class);//doesn't work 

: は明確にするために、私の目標は、1つのアカウントクラスの2つのオブジェクト、このような何かを持っていることですあなたはthoses XMLをロードする必要がある、とXStreamの分布-1.4.9を使用して

1.first XML(recipient.xml)

<RecipientData> 
    <login>naLogin</login> 
    <password>anaPass</password> 
</RecipientData> 

2秒OND XML(sender.xml)このAccountクラスで

<SenderData> 
    <login>awesomeLogin</login> 
    <password>awesomePass</password> 
</SenderData> 

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()); 
    } 
} 

とテストクラス:

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(); 


    } 
} 

その作品。この結果のように、あなたが何か

+0

を忘れていないかどうかを確認するために、あなたのコードで

login=awesomeLogin pass=awesomePass login=naLogin pass=anaPass 

ルック私はXStreamAlias' @クラスのアノテーションは '使用する必要があると思いました。あなたの例のような別の別名をテストしませんでした。それはあなたのソリューションで動作します。どうもありがとうございました! – BohdanN

関連する問題