gpt4 book ai didi

java - 有没有办法在 JAXB 中配置渲染深度?

转载 作者:数据小太阳 更新时间:2023-10-29 01:58:22 26 4
gpt4 key购买 nike

假设我已经布置了域对象,因此 XML 如下所示:

<account id="1">
<name>Dan</name>
<friends>
<friend id="2">
<name>RJ</name>
</friend>
<friend id="3">
<name>George</name>
</friend>
</friends>
</account>

我的域对象:

@XmlRootElement
public class Account {
@XmlAttribute
public Long id;
public String name;

@XmlElementWrapper(name = "friends")
@XmlElement(name = "friend")
public List<Account> friends;
}

是否有一种简单的方法可以将 JAXB 配置为仅渲染到 2 的深度?意思是,我希望我的 XML 看起来像这样:

<account id="1">
<name>Dan</name>
<friends>
<friend id="2" />
<friend id="3" />
</friends>
</account>

最佳答案

您可以使用 XmlJavaTypeAdapter 来做到这一点.

更改帐户如下:

@XmlRootElement
public class Account {
@XmlAttribute
public Long id;
public String name;

@XmlElementWrapper(name = "friends")
@XmlElement(name = "friend")
@XmlJavaTypeAdapter( value = AccountAdapter.class )
public List<Account> friends;
}

帐户适配器.java:

public class AccountAdapter extends XmlAdapter<AccountRef, Account>
{
@Override
public AccountRef marshal(Account v) throws Exception
{
AccountRef ref = new AccountRef();
ref.id = v.id;
return ref;
}

@Override
public Account unmarshal(AccountRef v) throws Exception
{
// Implement if you need to deserialize
}
}

AccountRef.java:

@XmlRootElement
public class AccountRef
{
@XmlAttribute
public Long id;
}

关于java - 有没有办法在 JAXB 中配置渲染深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2313962/

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