gpt4 book ai didi

java - 使用 JaxB 解码时出现问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:44 25 4
gpt4 key购买 nike

我有以下 XML 文件要解码

<root>
<emp>Google</emp>
<emp>Yahoo</emp>
<xyz>random</xyz>
</root>

我用下面的方式使用注释,

@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class abc {

@XmlElement(name = "emp")
private String emp1;
@XmlElement(name = "emp")
private String emp2;
@XmlElement(name = "xyz")
private String xyz;
// added getters and setters for these fields
}

我的问题是在我试图得到

   obj.getEmp1(); // result is Yahoo instead of Google
obj.getEmp2(); // result is null.

请澄清我,我做错了什么?

最佳答案

注意:我是 EclipseLink JAXB (MOXy) JAXB (JSR-222) 的领导和成员专家组。

标准 JAXB (JSR-222) 注释不支持将 2 个不同的属性映射到同一 XML 元素。

对于此用例,您可以使用 EclipseLink JAXB (MOXy) 的 @XmlPath 扩展。

import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class abc {

@XmlPath("emp[1]/text()")
private String emp1;
@XmlPath("emp[2]/text()")
private String emp2;
@XmlElement(name = "xyz")
private String xyz;

// added getters and setters for these fields
}

了解更多信息

关于java - 使用 JaxB 解码时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17653718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com