Ich fange gerade an, mit der Android-Entwicklung mit SimpleXML zu experimentieren, und dachte, es würde ganz gut laufen, bis ich auf ein Problem stieß. Der folgende Code erzeugt eine Ausnahme von
W/System.err(665): org.simpleframework.xml.core.ConstructorException: Kann keine innere Klasse konstruieren
Ich habe die Fragen zu inneren Klassen durchgesehen und denke, dass ich verstehe, warum Sie sie verwenden würden (nicht, dass meine unbedingt beabsichtigt war), aber trotz der Verschiebung meines Codes um zu versuchen und die Verwendung zu vermeiden, bin ich immer noch ein wenig stecken und würde jede Hilfe zu schätzen wissen.
Quellcode:
public class InCaseOfEmergencyMedAlertAllergiesActivity extends Activity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Serializer serializer = new Persister();
InputStream xmlstream = this.getResources().openRawResource(R.raw.sample_data_allergies);
try {
medalertdata allergyObject = serializer.read(medalertdata.class, xmlstream);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setContentView(R.layout.allergies);
}
@Root
public class medalertdata {
@ElementList
private List<allergy> allergyList;
public List getAllergies() {
return allergyList;
}
}
@Root
public class allergy{
@Element
private String to;
@Element
private Boolean medical;
@Element
private String notes;
public allergy(String to, Boolean medical, String notes){
this.to = to;
this.medical = medical;
this.notes = notes;
}
public String getTo() {
return to;
}
public Boolean getMedical() {
return medical;
}
public String getNotes() {
return notes;
}
}
}
Mit der XML-Datei referenziert strukturiert als:
<?xml version="1.0" encoding="ISO-8859-1"?>
<medalertdata>
<allergy>
<to>Penicillin</to>
<medical>true</medical>
<notes></notes>
</allergy>
<allergy>
<to>Bee Stings</to>
<medical>false</medical>
<notes>Sample</notes>
</allergy>
</medalertdata>
Liegt das Problem darin, wie ich die SimpleXML-Klassen annotiert habe oder wo ich versuche, sie zu lesen? Danke!