Java 使用Jaxws在Soap响应中添加额外的标记或元素

Java 使用Jaxws在Soap响应中添加额外的标记或元素,java,soap,cxf,jax-ws,Java,Soap,Cxf,Jax Ws,我正在使用SpringCXF开发一个soap服务。下面是我的回应结构 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "response", propOrder = { "name", "addressList" }) public class Response { private String name; private List<Address> addressList; } -- getter a

我正在使用SpringCXF开发一个soap服务。下面是我的回应结构

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "response", propOrder = {
    "name",
    "addressList"
})
public class Response 
{

private String name;
private List<Address> addressList;
}

-- getter and setter follows
@xmlacessortype(xmlacesstype.FIELD)
@XmlType(name=“response”,proporter={
“姓名”,
“地址列表”
})
公众课堂反应
{
私有字符串名称;
私人名单地址名单;
}
--接二连三
目前的反应是

<response>
   <name>RASSI ANDREA</name>
   <addressList type="1">
      <address>Address 1</address>
      <address>Address 2</address>
      <address>Address 3</address>
   </addressList>
   <addressList type="2">
      <address>Address 4</address>
      <address>Address 5</address>
      <address>Address 6</address>
   </addressList>
</response>

拉西安德里亚酒店
地址1
地址2
地址3
地址4
地址5
地址6
但我需要的实际响应结构如下,其中添加了一个新标记“row”

<response>
   <name>RASSI ANDREA</name>
   <row>
      <addressList type="1">
         <address>Address 1</address>
         <address>Address 2</address>
         <address>Address 3</address>
      </addressList>
   </row>
   <row>
      <addressList type="2">
         <address>Address 4</address>
         <address>Address 5</address>
         <address>Address 6</address>
      </addressList>
   </row>
</response>

拉西安德里亚酒店
地址1
地址2
地址3
地址4
地址5
地址6

谁能解释一下我应该在哪里做出改变来实现这一点?注释中的任何更改或创建一个新类作为“row”(尽管我认为这是一个糟糕的方法)

将注释
@xmlementwrapper(name=“row”)
添加到
地址列表中将
标记添加到XML中。试试看

您需要添加以下语句:

导入javax.xml.bind.annotation.xmlementwrapper

公共类响应{
私有字符串名称;
@xmlementwrapper(name=“row”)//在此处添加此行
私人名单地址名单;
}

将注释
@xmlementwrapper(name=“row”)
添加到
地址列表将
标记添加到XML中。试试看

您需要添加以下语句:

导入javax.xml.bind.annotation.xmlementwrapper

公共类响应{
私有字符串名称;
@xmlementwrapper(name=“row”)//在此处添加此行
私人名单地址名单;
}

您为什么要这样做?额外的元素应该在WSDL中,您的代码应该是自动生成的。所以程序应该是:1。将元素添加到WSDL,2。重新生成代码,3。更改您的实现,以及4。通知所有客户机WSDL更改。也许还有4个。真的应该是第一个你为什么要这么做?额外的元素应该在WSDL中,您的代码应该是自动生成的。所以程序应该是:1。将元素添加到WSDL,2。重新生成代码,3。更改您的实现,以及4。通知所有客户机WSDL更改。也许还有4个。这个方法适用于我提到的例子。但是,如果在新标记之前有多个属性,该怎么办。。示例地址1我的姓名1地址4我的姓名2如果在添加的新标记下有多个属性,则此aparoach不起作用此方法适用于我提到的示例。但是,如果在新标记之前有多个属性,该怎么办。。示例地址1我的姓名1地址4我的姓名2如果添加的新标记下有多个属性,则此Aparoch不起作用
public class Response {

    private String name;
    @XmlElementWrapper(name="row") // Add this line here
    private List<Address> addressList;
}