Java 尝试使用Jax2B从SOAP服务生成对象
我正试图获得一个Jax2b Maven插件,以整理我们在一台服务器上运行的SOAP API。我已经让它连接到服务并生成对象,但是这个SOAP API的映射带来了问题。详情如下 我们正在使用JavaSpringMVC项目来实现这一点。我能够使用这个Spring教程连接到API,这样我就可以向它发出请求并成功地从它那里获得响应。这是提到的教程: 它使用这个jaxb2插件来完成肮脏的工作,并基于SOAP服务的WSDL创建Java对象,这很好:Java 尝试使用Jax2B从SOAP服务生成对象,java,spring,maven,soap,Java,Spring,Maven,Soap,我正试图获得一个Jax2b Maven插件,以整理我们在一台服务器上运行的SOAP API。我已经让它连接到服务并生成对象,但是这个SOAP API的映射带来了问题。详情如下 我们正在使用JavaSpringMVC项目来实现这一点。我能够使用这个Spring教程连接到API,这样我就可以向它发出请求并成功地从它那里获得响应。这是提到的教程: 它使用这个jaxb2插件来完成肮脏的工作,并基于SOAP服务的WSDL创建Java对象,这很好: <plugin> <groupId>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaLanguage>WSDL</schemaLanguage>
<generatePackage>hello.wsdl</generatePackage>
<forceRegenerate>true</forceRegenerate>
<schemas>
<schema>
<url>http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl</url>
</schema>
</schemas>
</configuration>
当然,我已经更改了generatePackage值和模式url,以匹配与之通信的API。如前所述,这很好用。不幸的是,我正在与的API的响应进行交互的API就是这样制作的:
<s:element name="GetBuildingsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetBuildingsResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
但是,在GetBuildingResult字符串中,实际上还有3个级别的XML:
<Buildings>
<Data>
<Description>Building1Description</Description>
<Abbreviation>Building1Abbreviation</Abbreviation>
<ID>Building1ID</ID>
</Data>
<Data>
<Description>Building2Description</Description>
<Abbreviation>Building2Abbreviation</Abbreviation>
<ID>Building2ID</ID>
</Data>
</Buildings>
因此有一个建筑物数组,其中有一个建筑物列表,每个都称为数据,在数据标记中有每个建筑物的单独细节
实际上,JAX2B封送器在生成Java对象时,我得到的只是一个名为GetBuildingResponse的对象,其中包含一个名为GetBuildingResult的字符串
是否有一种方法可以设置它,以便JAX2B可以/将进一步查看并将数据中的元素转换为对象,这样我就不必在获得这些结果后手动解析它们了
我确信一定有办法做到这一点,但到目前为止,我对soapweb服务和这个JAX2B插件还相当缺乏经验