我在通过 Java 代码生成 XML 时遇到问题。我有一个类(class) SailingAvailabilityResponseMessage
。在这个类中,还有几个其他类也在我正在编写的方法中使用。以下是 SailingAvailabilityResponseMessage
内容的片段类看起来像:
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
@XmlType(propOrder={"type", "agency", "version", "release", "processingInfo", "advisoryMessage", "packageDescription", "sailingGroup", "registrationInformation"})
public class SailingAvailabilityResponseMessage {
private ProcessingInfo processingInfo;
private AdvisoryMessage advisoryMessage;
private PackageDescription packageDescription;
private SailingGroupResponse[] sailingGroup;
private RegistrationInformation registrationInformation;
String type;
@XmlAttribute
public String getType() {
return type;
}
我遇到的具体问题与SailingGroupResponse[] sailingGroup;
相关。
SailingGroupResponse[]
继承自sailingGroup
。这是sailingGroup
看起来像:
public class SailingGroup {
private SailingDescription sailingDescription;
public SailingDescription getSailingDescription() {
return sailingDescription;
}
public void setSailingDescription(SailingDescription sailingDescription) {
this.sailingDescription = sailingDescription;
}
这就是SailingGroupResponse[]
看起来像:
import javax.xml.bind.annotation.XmlType;
@XmlType(propOrder={"sailingInformation", "diningDetails", "modeOfTransportation", "currencyInfo", "packageDescription"})
public class SailingGroupResponse extends SailingGroup {
private SailingInformation sailingInformation;
private DiningDetails diningDetails;
private ModeOfTransportation modeOfTransportation;
private CurrencyInfo currencyInfo;
private PackageDescription packageDescription;
我在生成 XML 时遇到的问题是我期待 <sailingGroup>
的标签。我得到了,但随后我也得到了 <sailingGroupResponse>
的标签我不想要它,因为它不是我遵循的原始规范的一部分。我通过 WebSphere RDi 生成 XML。我使用 SOAP 1.2,但我尝试开发的业务合作伙伴使用 SOAP 1.1,因此我不能使用 JAX-WS 运行时,而是必须使用 JAX-RPC(apache AXIS 不允许我生成)。
有人熟悉 JAX-RPC 运行时以及与我所问的问题类似的问题吗?如果有人知道一个好的网站可供我访问以获取更多信息,我愿意进一步研究,尽管到目前为止我在找到答案方面还没有取得多大成功。
谢谢
卡伦
最佳答案
正如您所发现的,将多态性引入 JAXB 带注释的类通常会导致复杂化。
试试这个:
@XmlElement(type = SailingGroup.class)
public SailingGroupResponse[] getSailingGroup() {
return sailingGroup;
}
您可能还需要将 @XmlType 添加到 SailingGroup。
关于Java/XML问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960384/