Java 使用Jaxws在Soap响应中添加额外的标记或元素
我正在使用SpringCXF开发一个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
@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;
}