Использование XStream для десериализации XML > объекта

Я создаю приложение и хочу, чтобы пользователи могли иметь несколько профилей, но как мне сохранить информацию о профиле, такую ​​как строки и целые числа? Я мог бы использовать 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. Я хочу отобразить информацию о профиле, такую ​​как name, dartsThrown и т. Д. Итак, как я могу использовать XStream для воссоздания профиля?

Спасибо

1 ответ

Это не точный ответ на ваш вопрос, думал, что вы можете работать так. Здесь проблема с вашим тегом <100+> в вашем XML-файле, но имя тега должно быть символьными данными или разметкой. Так что я бы предложил при сериализации дать свое имя как 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());
..............
..............
Другие вопросы по тегам