Hallo zusammen
Ich habe (mit JAXB) einen kleinen XMl-Parser geschrieben, der im Normalfall funktioniert.
Ich möchte ihn allerdings etwas generischer gestalten und da funktioniert er nicht mehr.
Weiss jemand, wo der Fehler liegt?
Exception:
Ich habe (mit JAXB) einen kleinen XMl-Parser geschrieben, der im Normalfall funktioniert.
Ich möchte ihn allerdings etwas generischer gestalten und da funktioniert er nicht mehr.
Weiss jemand, wo der Fehler liegt?
Java:
public interface ConfigProperties <T> {
List<T> getLogProperties();
}
Java:
@XmlAccessorType(XmlAccessType.FIELD)
public class ConfigLogProperties<T> implements ConfigProperties<T> {
@XmlElementWrapper(name = "logProperties")
@XmlElement(name = "logProperty", required = true)
private List<T> logProperties;
public List<T> getLogProperties() {
return logProperties;
}
}
Java:
public class FileReader<T extends ConfigProperties<S>, S> {
private List<S> myList;
private T typeOfT;
public FileReader (T t){
typeOfT = t;
try {
ConfigProperties<S> config;
File file = new File("src/EventLogProperties.xml");
Unmarshaller configUnmarshaller = JAXBContext.newInstance(typeOfT.getClass()).createUnmarshaller();
StreamSource stream = new StreamSource(file);
config = configUnmarshaller.unmarshal(stream, typeOfT.getClass()).getValue();
myList = config.getLogProperties();
} catch (JAXBException e) {
e.printStackTrace();
}
}
public List<S> getMyList() {
return myList;
}
}
Java:
@XmlAccessorType(XmlAccessType.FIELD)
public class LogProperty {
@XmlElement(name="logName")
private String logName;
public String getLogName() {
return logName;
}
@XmlElement(name="severity")
private String severity;
@XmlElement(name="solved")
private boolean solved;
@XmlElement(name="number")
private int number;
//getters und setters
}
Java:
public class TestClass {
public static void main(String[] args) {
FileReader<ConfigLogProperties<LogProperty>, LogProperty> myFileReader
= new FileReader<ConfigLogProperties<LogProperty>, LogProperty>(new ConfigLogProperties<LogProperty>());
List<LogProperty> myList = myFileReader.getMyList();
System.out.println(myList.get(0).getSeverity());
System.out.println(myList.get(1).getSeverity());
}
}
Exception:
Java:
Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to LogProperty
at TestClass.main(MainClass.java:15)
Zuletzt bearbeitet: