gpt4 book ai didi

java - JAXB - java类的正确注释

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:59 25 4
gpt4 key购买 nike

我有一个 xml 文档,例如:

<ParentClass>
<FirstClass>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
</FirstClass>
<SecondClass>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
</SecondClass>
</ParentClass>

我有如下java类:

@XmlRootElement(name = "ParentClass")
@XmlAccessorType(XmlAccessType.FIELD)
public class ParentJavaClass
{
@XmlElement(name="FirstClass")
private List<FirstJavaClass> fc;
public List<FirstJavaClass> getFc()
{
return fc;
}
public void setFc(List<FirstJavaClass> fc)
{
this.fc = fc;
}

@XmlElement(name="SecondClass")
private List<SecondJavaClass> sc;
public List<SecondJavaClass> getSc()
{
return sc;
}
public void setSc(List<SecondJavaClass> sc)
{
this.sc = sc;
}
}

@XmlType(name = "Row", namespace = "Fc")
@XmlAccessorType(XmlAccessType.FIELD)
public class FirstJavaClass
{
private String data1;
private String data2;

// getters & setters
}

@XmlType(name = "Row", namespace = "Sc")
@XmlAccessorType(XmlAccessType.FIELD)
public class SecondJavaClass
{
private String data1;
private String data2;

// getters & setters
}

但是,当我打电话时

final ParentJavaClass x = (ParentJavaClass) jaxbUnmarshaller.unmarshal(file);

我的 FirstJavaClass 和 SecondJavaClass 的结果列表全部为空值。我认为“行”元素让我困惑,但我不确定如何正确注释它。请协助。谢谢。

最佳答案

您应该注释如下:

@XmlElementWrapper(name="FirstClass")
@XmlElement(name="Row")
private List<FirstJavaClass> fc;

@XmlElementWrapper(name="SecondClass")
@XmlElement(name="Row")
private List<SecondJavaClass> sc;

注释的意思是:

  • @XmlElementWrapper 对应于您想要在其中嵌套集合数据的元素。
  • FirstJavaClass 的每个实例都将对应于嵌套在 FirstClass 元素中的一个 Row 元素。
<小时/>

调试技巧

当您的 JAXB 对象模型未正确解码时,请尝试:

  1. 填充它并将其编码为 XML。
  2. 然后将此 XML 与您尝试解码的 XML 进行比较,看看有什么差异。
  3. 调整注释,直到编码的 XML 与您尝试解码的内容匹配
  4. 解码 XML。

关于java - JAXB - java类的正确注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127116/

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