Java/XML问题

标签 java xml web-services jaxb

我在通过 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/

相关文章:

java - 如何保护我的 Java AES 加密 key

java - RecyclerView 在 Groupie 中不可见 (Kotlin)

java - 需要在没有 wsdl 的情况下调用 soap ws

xml - 如何选择除特定元素之外的特定元素的所有兄弟元素

html - "Encrypted"谷歌搜索的html代码?

java - 如何将为 Java Webservice 生成的 WSDl 转换为 C# 客户端?

java - 删除数组中一个接一个的重复项

java - 验证架构是有效的 JSON 架构而不是数据

java - 按引用调用或按值调用

c# - .NET:在验证/读取 XML 模式时阻止 Web 访问?