我通过添加解决了问题
@XmlRootElement(name="abc_xxx")
到 Root 类。eclipse生成的JAXB类没有在我的根类中添加这个注解。
JAXB 实现将尝试匹配文档的根元素(而不是子元素)。 如果您想解组到 XML 文档的中间,那么您可以使用 StAX 解析文档,将
XMLStreamReader
推进到所需的元素,然后对其进行解组。
了解更多信息
现在我收到以下错误。一个错误: javax.xml.bind.UnmarshalException - 带有链接异常: [javax.xml.bind.UnmarshalException:意外元素(uri:“”, 本地:“Obj123”)。预期元素为(无)]。
A
JAXBContext
只知道你告诉它的类。而不是:
JAXBContext jaxbContext = JAXBContext.newInstance();
你需要做:
JAXBContext jaxbContext = JAXBContext.newInstance(Obj123.class);
使用 ObjectFactory 类代替,如
JAXBContext jaxbContext = null;
try {
jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
} catch (JAXBException e) {
e.printStackTrace();
}
JAXBElement<ObjectFactory> applicationElement = null;
try {
applicationElement = (JAXBElement<ObjectFactory>)
unmarshaller.unmarshal(Thread.currentThread().getClass()
.getResourceAsStream(fileName));
} catch (JAXBException e) {
e.printStackTrace();
}
试试这个就能解决上述问题。我的问题已经解决了
当我将导入语句从 javax.xml.bind.annotation.XmlRootElement 更新为 @jakarta.xml.bind.annotation.XmlRootElement 时,问题已解决