我没有将名称作为@XmlElementRef的标记名。
父元素网中的元素声明:
@XmlElementRef(name = "Agents", type = JAXBElement.class, required = false)
protected JAXBElement<ArrayOfGeneralAgent> agents;
ArrayOfGeneralAgent类的声明:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Agents", propOrder = {
"generalAgent"
})
public class ArrayOfGeneralAgent {
@XmlElement(name = "GeneralAgent", nillable = true)
protected List<GeneralAgent> generalAgent;
...
}
从上面的代码,期望下面的xml:
<Agents>
<GeneralAgent>
<ComPerc>1.5</ComPerc>
<CustID>abc</CustID>
<SharePerc>123</SharePerc>
</GeneralAgent>
</Agents>
但是像这样获取XML:
<ArrayOfGeneralAgent>
<GeneralAgent>
<ComPerc>1.5</ComPerc>
<CustID>abc</CustID>
<SharePerc>123</SharePerc>
</GeneralAgent>
</ArrayOfGeneralAgent>
而不是“代理商”得到“ ArrayOfGeneralAgent”。
我尝试了很多事情,但一无所获。
最佳答案
您的问题是@XmlElementRef.name
对@XmlRootElement
不起作用,请阅读有关此here的信息。
您要做的是从xml元素上的XmlElementRef
中删除属性名称。
@XmlElementRef(type = JAXBElement.class, required = false)
protected JAXBElement<ArrayOfGeneralAgent> agents;
并将
@XmlRootElement
添加到您的班级。@XmlRootElement(name="Agents")
public class ArrayOfGeneralAgent{...}