JAXB 编组 @XmlElementRef 名称 属性 不是名称
JAXB marshalling @XmlElementRef name property not coming as Name
我没有将名称作为@XmlElementRef 的标记名称。
父 elemnet 中的元素声明:
@XmlElementRef(name = "Agents", type = JAXBElement.class, required = false)
protected JAXBElement<ArrayOfGeneralAgent> agents;
classArrayOfGeneralAgent 的声明:
@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>
而不是 "Agents" 得到 "ArrayOfGeneralAgent"。
我尝试了很多东西,但没有找到。
您的问题是 @XmlElementRef.name
不适用于 @XmlRootElement
,阅读此 here。
您需要做的是从 xml 元素的 XmlElementRef
中删除属性 name。
@XmlElementRef(type = JAXBElement.class, required = false)
protected JAXBElement<ArrayOfGeneralAgent> agents;
并将 @XmlRootElement
添加到您的 class。
@XmlRootElement(name="Agents")
public class ArrayOfGeneralAgent{...}
我没有将名称作为@XmlElementRef 的标记名称。
父 elemnet 中的元素声明:
@XmlElementRef(name = "Agents", type = JAXBElement.class, required = false)
protected JAXBElement<ArrayOfGeneralAgent> agents;
classArrayOfGeneralAgent 的声明:
@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>
而不是 "Agents" 得到 "ArrayOfGeneralAgent"。
我尝试了很多东西,但没有找到。
您的问题是 @XmlElementRef.name
不适用于 @XmlRootElement
,阅读此 here。
您需要做的是从 xml 元素的 XmlElementRef
中删除属性 name。
@XmlElementRef(type = JAXBElement.class, required = false)
protected JAXBElement<ArrayOfGeneralAgent> agents;
并将 @XmlRootElement
添加到您的 class。
@XmlRootElement(name="Agents")
public class ArrayOfGeneralAgent{...}