gpt4 book ai didi

java - XmlElementWrapper 和附加的奇怪值

转载 作者:行者123 更新时间:2023-12-01 05:21:21 26 4
gpt4 key购买 nike

在我的代码中我有这个 bean:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Data implements Serializable {

@XmlAttribute
private String _name;

@XmlElementWrapper(name = "statuses")
@XmlElement(name="status")
private List<Boolean> _statuses;

public String getName() {
return _name;
}

public void setName(String name) {
_name = name;
}

public List<Boolean> getStatuses() {
return _statuses;
}

public void setStatuses(List<Boolean> statuses) {
_statuses = statuses;
}

....

}

这是编码(marshal) bean 的代码:

Writer w = null;
try {
final JAXBContext context = JAXBContext.newInstance(Data.class);
final Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
w = new FileWriter("file.xml");
m.marshal(obj, w);
} catch (Exception e) {
e.printStackTrace();
} finally {
try { w.close();}
catch (Exception e) {}
}

我的期望是:

<data name="data-test">
<statuses>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
</statuses>
...
</data>

但是我得到了:

<data name="data-test">
<statuses>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
<status>true</status>
</statuses>

// strange repetition
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>
<statuses>true</statuses>

// attribute as separated element
<name>data-test</name>
...
</data>

如何避免这种奇怪的重复?

最佳答案

我的猜测是访问类型不起作用。您尝试过XmlAccessType.FIELD吗?另外,请确保您已经正确编译了您的类并且您的类路径设置正确(也许您有一个来自早期测试的旧类?)。

更新:

您可以尝试将 @XmlTransient 显式添加到 getter/setter 吗?

关于java - XmlElementWrapper 和附加的奇怪值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363916/

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