【问题标题】:Using XStream to deserialize an XML > Object使用 XStream 反序列化 XML > 对象
【发布时间】:2015-04-13 07:58:43
【问题描述】:

我正在创建一个应用程序,我希望用户能够拥有多个配置文件,但我将如何保存配置文件的信息,如字符串和整数。我可以使用 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 重新创建配置文件。我想显示有关配置文件的信息,例如名称、飞镖投掷等。那么如何使用 XStream 重新创建配置文件?

谢谢

【问题讨论】:

    标签: java xml xstream xmlconvert


    【解决方案1】:

    这不是您认为可以这样工作的问题的确切答案。您的 xml 文件中的标签 &lt;100+&gt; 存在问题,但标签名称应该是字符数据或标记。因此,我建议在序列化时将其名称命名为 s100,s120.... 这样它将这些标签视为字符数据,您将能够使用 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());
    ..............
    ..............
    

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 2011-03-09
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多