2

我想从 WSDL 生成 Java 类。我正在从 ant 任务中调用 wsdl2java。命令行如下所示:

java -cp ... org.apache.axis2.wsdl.WSDL2Java -o generated_dir -S . -R . -l java -p "com.make.me.rich" -d adb -or --noBuildXML -uri MakeMeRich.wsdl

MakeMeRich.wsdl 包含来自 Micrsosoft 的内联模式,例如:

<xsd:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
  <xsd:complexType name="ArrayOfint">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="int" type="xsd:int" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="ArrayOfint" nillable="true" type="tns:ArrayOfint" />
    <xsd:complexType name="ArrayOfKeyValueOfstringstring">
      <xsd:annotation>
        <xsd:appinfo>
          <IsDictionary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</IsDictionary>
        </xsd:appinfo>
      </xsd:annotation>
      <xsd:sequence>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfstringstring">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Key" nillable="true" type="xsd:string" />
              <xsd:element name="Value" nillable="true" type="xsd:string" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  <xsd:element name="ArrayOfKeyValueOfstringstring" nillable="true" type="tns:ArrayOfKeyValueOfstringstring" />
</xsd:schema>

但是 wsdl2java 解析器给出了警告:

[java] Warning: No schemaLocation for import of http://schemas.microsoft.com/2003/10/Serialization/Arrays; compilation may fail

任何想法如何使用 wsdl2java 处理内联模式?

4

3 回答 3

3

使用数据绑定xmlbeans似乎可以解决问题:-d xmlbeans.

于 2013-05-16T20:33:11.960 回答
1

您使用的是哪个版本的 Axis2?我在 1.6.x 版本中遇到了类似的问题,而 1.5.x 及以下版本一切正常。你能用旧版本试试吗?在我看来,使用 xmlbeans 不是一个解决方案,它只是一种解决方法。

于 2013-05-31T13:37:59.537 回答
0

将其作为 wsdl 中的内联模式。

于 2013-05-15T17:36:17.303 回答