Ich habe ein Problem mit meinem Unmarshaller. Ich habe eine Datei, die wie folgt aussieht:jaxb unMarshaller Fehler ClassCastException, weil zwei XML-Elemente den gleichen Namen haben. Warum?
<Employee xmlns="namespace here">
<Employee>
<Id>2</Id>
<Name>idk</Name>
</Employee>
</Employee>
Das Problem ist das Wurzelelement und die Liste der Elemente die gleichen Namen „Mitarbeiter“ sind. Wenn ich zum Unmarshal gehe, bekomme ich eine Klassenkasstexzeption.
@XmlRootElement(name="Employee")
public class EmployeeInformation {
List<EmployeeInformationElement> elements;
private String errorCode;
private String errorMessage;
public List<EmployeeInformationElement> getElements() {
return elements;
}
@XmlElement(name="Employee")
public void setElements(List<EmployeeInformationElement> elements) {
this.elements = elements;
}
public String getErrorCode() {
return errorCode;
}
@XmlElement(name="ErrorCode")
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMessage() {
return errorMessage;
}
@XmlElement(name="ErrorMessage")
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
Ich kann diesen Code verwenden, um eine Datei zu ordnen, die genau wie die Datei aussieht ich entpacken müssen. Also bin ich verwirrt. Was so fehlt, wenn ich entpacken, wird die Unmarshaller nicht geben Sie mir die folgende Ausnahme:
java.lang.ClassCastException: XXXX.EmployeeInformationElement cannot be cast to XXXX.EmployeeInformation
Danke für die Antwort. Es sieht so aus, als hätte ich vergessen die Employee Element Klasse zu posten. Ich habe versucht, den Code auf das Problem, das ich hatte, zu vereinfachen und nicht Leute in dem ganzen System zu verlieren, mit dem ich arbeite. Dies half mir zu erkennen, dass ich auf meinem EmployeeInformationElement ein Root-Element hinzugefügt hatte, das ich nicht benötigte. Danke für die Hilfe. Problem gelöst und weiter gemacht. Vielen Dank! – Koder29