gpt4 book ai didi

java - 我可以在 JAXB 中建模一个有时包含其他元素有时直接数据的元素吗

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

Web 服务有时会在表单中提供一个元素

<artist>
<name>name</name>
</artist>

有时喜欢

<artist>name</artist>

我无法控制网络服务,因此无法更改

我将结果读入 JAXB 模型。是否可以在 JAXB 中对这种不一致进行建模,我的模型目前只代表第一个。

最佳答案

如果您能够在 Web 服务消息传递给 JAXB 之前拦截它,则可以将其转换(例如使用 XSLT)为适用于当前 JAXB 模型的形式。如果您不能这样做,处理起来会有点难看,但您可以尝试将这两种消息形式建模为混合内容,从而允许您将内容表示为字符串或包含该字符串的元素。

例如:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"content"
})
@XmlRootElement(name = "artist")
public class Artist {

@XmlElementRef(name = "name", type = JAXBElement.class, required = false)
@XmlMixed
protected List<Serializable> content;

public List<Serializable> getContent() {
if (content == null) {
content = new ArrayList<Serializable>();
}
return this.content;
}
}

@XmlRegistry
public class ObjectFactory {

private final static QName NAME_QNAME = new QName("", "name");
public ObjectFactory() {}

public Artist createArtist() {
return new Artist();
}

@XmlElementDecl(namespace = "", name = "name", scope = Artist.class)
public JAXBElement<String> createArtistName(String value) {
return new JAXBElement<String>(NAME_QNAME, String.class, Artist.class, value);
}
}

关于java - 我可以在 JAXB 中建模一个有时包含其他元素有时直接数据的元素吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290191/

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