繁体   English   中英

使用XStream反序列化XML> Object

[英]Using XStream to deserialize an XML > Object

我正在创建一个应用程序,希望用户能够拥有多个配置文件,但是我将如何保存该配置文件的信息,例如字符串和整数。 我可以使用XStream创建XML文件,但我不确定如何从XML文件重新创建配置文件。 这是我的个人资料代码

class Profile {

String name;
int dartsThrown;
int totalScore;
float average;
int num100, num120, num140, num180;

public Profile(){

}

public Profile(String thename){
    name = thename;
}

public void setName(String thename){
    name = thename;
}

public String getName(){
    return name;
}

public int getDartsThrown(){
    return dartsThrown;
}

public int getTotalScore(){
    return totalScore;
}

public float getAverage(){
    return average;
}

public int get100s(){
    return num100;
}

public int get120s(){
    return num120;
}

public int get140s(){
    return num140;
}

public int get180s(){
    return num180;
}

}

如果我有一个包含此文本的XML文件

<Profile>
    <name>Mitch</name>
    <darts-thrown>100</darts-thrown>
    <total-scrore>100</total-scrore>
    <average>100.0</average>
    <100+>100</100+>
    <120+>100</120+>
    <140+>100</140+>
    <180s>100</180s>
</Profile>

我将如何从XML重新创建配置文件。 我想显示有关配置文件的信息,例如名称,dartsThrown等。那么如何使用XStream重新创建配置文件?

谢谢

如果您可以像这样工作,这不是您问题的确切答案。 您的xml文件中的标记<100+>存在问题,但标记名称应为字符数据或标记。 所以我建议在序列化时给它的名字命名为s100s120 ......这样它就会将这些标记视为字符数据,你可以使用aliasAttribute方法对其进行反序列化。 如果是这样,那么您可以这样做:

XStream stream = new XStream(new StaxDriver());
stream.alias("Profile", Profile.class);
stream.aliasAttribute(Profile.class, "dartsThrown", "darts-thrown");
stream.aliasAttribute(Profile.class, "totalScore", "total-scrore");
stream.aliasAttribute(Profile.class, "num100", "s100");
................
.................
..................

To access these value convert it using fromXML method

FileReader fileReader = new FileReader("xmlFile.xml");
Profile profile = (Profile)stream.fromXML(fileReader);
System.out.println("Name: "+profile.getName());
..............
..............

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM