Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试使用Jax2B从SOAP服务生成对象_Java_Spring_Maven_Soap - Fatal编程技术网

Java 尝试使用Jax2B从SOAP服务生成对象

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>

我正试图获得一个Jax2b Maven插件,以整理我们在一台服务器上运行的SOAP API。我已经让它连接到服务并生成对象,但是这个SOAP API的映射带来了问题。详情如下

我们正在使用JavaSpringMVC项目来实现这一点。我能够使用这个Spring教程连接到API,这样我就可以向它发出请求并成功地从它那里获得响应。这是提到的教程:

它使用这个jaxb2插件来完成肮脏的工作,并基于SOAP服务的WSDL创建Java对象,这很好:

<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插件还相当缺乏经验