gpt4 book ai didi

java - XSD 映射到 Java POJO

转载 作者:行者123 更新时间:2023-12-01 11:34:25 24 4
gpt4 key购买 nike

假设我有一个来自 Web 服务的 XML 源,我无法控制该源,其结构如下:

<wrapper>
<baz>content</baz>
<foo>
<bar>content</bar>
<bar>content</bar>
</foo>
</wrapper>

对应的XSD如下:

<xsd:complexType name="wrapper">
<xsd:element name="baz" type="xsd:string"/>
<xsd:element name="foo" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="bar" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:complexType>

从该 XSD JAXB 生成以下 Java 类:

@XmlType(name = "wrapper")
public class Wrapper {

@XmlElement
protected String baz;

@XmlElement
protected Foo foo;

@XmlType(name = "foo")
public static class Foo {

@XmlElement
protected List<String> bar;
}
}

是否可以重构/注释 POJO,以便 Wrapper 不再具有 Foo 对象,而是包含 Bar 对象列表?

如果有帮助的话,我目前正在使用 Spring-WS 来使用 Web 服务并使用默认的 Jaxb2Marshaller。

最佳答案

尝试添加@XmlElementWrapper注释。检查这个answer了解更多信息。

@XmlRootElement    
@XmlAccessorType(XmlAccessType.FIELD)
public class Wrapper {
@XmlElement
protected String baz;

@XmlElement(name = "bar")
@XmlElementWrapper(name = "foo")
protected List<String> bars;

public String getBaz() {
return baz;
}

public void setBaz(String baz) {
this.baz = baz;
}

public List<String> getBars() {
return bars;
}

public void setBars(List<String> bars) {
this.bars = bars;
}
}

关于java - XSD 映射到 Java POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30150366/

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