J
J4y
Neues Mitglied
- 2
Hallo alle miteinander,
ich habe eine XML-Datei in der eine Liste von Elementen, die von der gleichen Klasse in Java erben - hier Name
XML-Datei
in Java möchte ich das ganze wie folgt abbilden:
Name
MyName
MyAddress
MyTown - Oberelement
Da das Framework nicht in der Lage ist, Unterklassen von Namen zu finden, habe ich mir überlegt, dass ich hierfür einen eigenen Konverter erstelle, der über das Attribut Type die entsprechenden Klassen erzeugt
Insgesamt funktioniert das jedoch nicht. Wenn ich das so einlese wird der Fehler geworfen, dass von Name keine Instanz erzeugt werden kann.
Daher meine Frage: Ist an dem Code etwas falsch? Muss das @Convert vielleicht an eine andere Stelle?
Hinweis: Dies ist nur ein Minimal-Beispiel meines Problems. Die XML Datei empfange ich bei meinem Programm von einem Server.
Als Konsequenz kann ich also nicht das Class-Attribut einfach hinzufügen und die Architektur kann insgesamt nicht verändert werden
ich habe eine XML-Datei in der eine Liste von Elementen, die von der gleichen Klasse in Java erben - hier Name
XML-Datei
Code:
<myTown>
<name type="myname">Peter</name>
<name type="myname">Paul</name>
<name type="myadress">The White House</name>
<name type="myname">Daisy</name>
</myTown>
Name
Code:
@Root(strict=false)
public abstract class Name {
public abstract String getValue();
}
Code:
public class MyName extends Name{
@Text
protected String value;
public MyName(String value) {
super();
this.value = value;
}
public String getValue() {
return value;
}
}
Code:
@Element
public class MyAddress extends Name{
@Text
protected String value;
public MyAddress(String value) {
super();
this.value = value;
}
public String getValue() {
return value;
}
}
Code:
@Root
public class MyTown {
@ElementList(inline=true,entry="name")
protected List<Name> names;
}
Code:
public class MyConverter implements Converter<Name>{
@Override
public Name read(InputNode node) throws Exception {
InputNode typeNode = node.getAttribute("type");
String type = typeNode.getValue();
String name = node.getValue();
if(type.equals("myname")){
return new MyName(name);
} else if(type.equals("myaddress")){
return new MyAddress(name);
}
return null;
}}
Daher meine Frage: Ist an dem Code etwas falsch? Muss das @Convert vielleicht an eine andere Stelle?
Hinweis: Dies ist nur ein Minimal-Beispiel meines Problems. Die XML Datei empfange ich bei meinem Programm von einem Server.
Als Konsequenz kann ich also nicht das Class-Attribut einfach hinzufügen und die Architektur kann insgesamt nicht verändert werden