gpt4 book ai didi

java - JAXB 编码 @XmlElementRef name 属性不作为 Name

转载 作者:行者123 更新时间:2023-12-02 09:22:18 42 4
gpt4 key购买 nike

我没有将名称作为 @XmlElementRef 的标记名称。

父elemnet中的元素声明:

@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 中删除属性 name

@XmlElementRef(type = JAXBElement.class, required = false)
protected JAXBElement<ArrayOfGeneralAgent> agents;

并将@XmlRootElement 添加到您的类中。

@XmlRootElement(name="Agents")
public class ArrayOfGeneralAgent{...}

关于java - JAXB 编码 @XmlElementRef name 属性不作为 Name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607428/

42 4 0