Java JAXB:缺失;“xsi类型”;非编组XML中的属性

Java JAXB:缺失;“xsi类型”;非编组XML中的属性,java,xml,jaxb,unmarshalling,Java,Xml,Jaxb,Unmarshalling,给定一个XML和一个相关的生成的xsd文件,我在用JAXB解组XML时遇到了一个问题 考虑以下代码: JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Envelope envelope = ((JAXBElement<Envelope>) jaxbUnmars

给定一个XML和一个相关的生成的xsd文件,我在用JAXB解组XML时遇到了一个问题

考虑以下代码:

JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Envelope envelope = ((JAXBElement<Envelope>) jaxbUnmarshaller.unmarshal(file)).getValue();
JAXBContext-JAXBContext=JAXBContext.newInstance(ObjectFactory.class);
解组器jaxbUnmarshaller=jaxbContext.createUnmarshaller();
信封信封=((JAXBElement)jaxbUnmarshaller.unmarshal(文件)).getValue();
xml文件已正确解组,但我丢失了有关“xsi:type”属性的所有信息


在生成的类中,没有任何“类型”字段可以匹配该信息。

解决方案是在生成的类中添加这两行代码:

@XmlAttribute(name = "type", namespace = "http://www.w3.org/2001/XMLSchema-instance")
protected java.lang.String type;
还添加getter/setter方法


这样,就可以正确读取“xsi:type”属性。

解决方案是在生成的类中添加这两行代码:

@XmlAttribute(name = "type", namespace = "http://www.w3.org/2001/XMLSchema-instance")
protected java.lang.String type;
还添加getter/setter方法


这样,就可以正确读取“xsi:type”属性。

谢谢您的回答,但是我无法解析具有xsi:type属性的元素的子元素。任何帮助都是非常好的…感谢您的回答,但是我无法解析具有xsi:type属性的元素的子元素。任何帮助都会很好。。。