Java 在解组XML文件时获取ClassCastException(JAXBContext传递正确的类名)
我有一个调用此方法的代码。我在解组时收到ClassCastException。我在创建Java 在解组XML文件时获取ClassCastException(JAXBContext传递正确的类名),java,xml,jaxb,Java,Xml,Jaxb,我有一个调用此方法的代码。我在解组时收到ClassCastException。我在创建JAXBContext对象时传递了正确的类名 public TestsuiteType parseTestSuiteXML(String path) throws JAXBException, FileNotFoundException { JAXBContext context = JAXBContext.newInstance(TestsuiteType.class); Un
JAXBContext
对象时传递了正确的类名
public TestsuiteType parseTestSuiteXML(String path) throws JAXBException, FileNotFoundException {
JAXBContext context = JAXBContext.newInstance(TestsuiteType.class);
Unmarshaller um = context.createUnmarshaller();
TestsuiteType ts = (TestsuiteType) um.unmarshal(new FileReader("/Users/admin/Documents/workspace_Nishant_dev/Practice/xmls/TEST-junit.xml"));
List<TestcaseType> tcs = ts.getTestcase();
Iterator<TestcaseType> it = tcs.iterator();
while(it.hasNext()) {
TestcaseType tc = it.next();
if(tc.getContent().size() == 0) {
tcs.remove(tc);
}
}
return ts;
}
您得到的是
JAXBElement
,而不是TestSuiteType
。您的值位于jaxbElement.getValue()
中,非常感谢。上面提到的问题已经解决了,但TestcaseType tc=it.next()中仍然出现错误;线程“main”java.util.ConcurrentModificationException中的异常位于java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)java.util.ArrayList$Itr.next(ArrayList.java:831)com.jaxb.testing.FailureProcessor.parseTestSuiteXML(FailureProcessor.java:66)com.jaxb.testing.FailureProcessor.main(FailureProcessor.java:27)中的异常尝试List tcs=newlinkedlist(ts.getTestcase())代码>。我认为ArrayLists
的迭代器在迭代期间不支持remove
。无论如何,这现在是一个集合问题,而不是JAXB。
Exception in thread "main" java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast to com.jaxb.testjunit.TestsuiteType
at com.jaxb.testing.FailureProcessor.parseTestSuiteXML(FailureProcessor.java:49)
at com.jaxb.testing.FailureProcessor.main(FailureProcessor.java:24)