2

同様のトピックや例を読んだことがありますが、WSDL から複雑な型を含む WSDL スキーマのコンテンツを取得することに関して、まだいくつかの問題があります。

WSDL4J、Castor、および JDOM ライブラリを使用しています。

            org.exolab.castor.xml.schema.Schema castorSchema = null ;
            if(theWSDL.getTypes() !=null &&  theWSDL.getTypes().getExtensibilityElements() !=null){
                for (Object e : theWSDL.getTypes().getExtensibilityElements()) {
                    schema = (Schema)e;
                }
            }

            if (schema != null) {
                DOMBuilder domBuilder = new DOMBuilder();
                Element jdomSchemaElement = domBuilder.build(schema.getElement());
                XMLOutputter outputter = new XMLOutputter();
                String xmlout = outputter.outputString(jdomSchemaElement.getDocument());

                StringReader in2 = new StringReader(xmlout);
                InputSource schemaSource = new InputSource(in2);

                SchemaReader schemaReader;
                try {
                    schemaReader = new SchemaReader(schemaSource);
                    castorSchema= schemaReader.read();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

このコードは一部の WSDL ファイルでは機能しますが、一部の WSDL ファイルでは、行 "castorSchema= schemaReader.read();" で次のエラーが発生します。

スレッド「メイン」の例外 java.lang.IllegalArgumentException: getComplexType: org.exolab.castor の org.exolab.castor.xml.schema.Schema.getComplexType(Schema.java:951) で「tns:cEstado」が認識されない名前空間プレフィックス.xml.schema.TypeReference.resolveTypeReference(TypeReference.java:122) at org.exolab.castor.xml.schema.TypeReference.getType(TypeReference.java:71) at org.exolab.castor.xml.schema.ElementDecl.getType (ElementDecl.java:349) で org.exolab.castor.xml.schema.ElementDecl.validate(ElementDecl.java:809) で org.exolab.castor.xml.schema.Group.validate(Group.java:463) でorg.exolab.castor.xml.schema.ComplexType.validate(ComplexType.java:815) org.exolab.castor.xml.schema.Schema.validate(Schema.java:2206) org.exolab.castor.xml. schema.reader.SchemaReader.read(SchemaReader.java:261) で network.WSNetwork.execute(WSNetwork.java:105) で network.WSNetwork.main(WSNetwork.java:61) で

スキーマ内の複合型に関する wsdl ファイル部分:

    <s:complexType>

      <s:sequence>

        <s:element minOccurs="0" maxOccurs="1" name="getestadosResult" type="tns:ArrayOfCEstado" />

      </s:sequence>

    </s:complexType>

  </s:element>

  <s:complexType name="ArrayOfCEstado">

    <s:sequence>

      <s:element minOccurs="0" maxOccurs="unbounded" name="cEstado" nillable="true" type="tns:cEstado" />

    </s:sequence>

  </s:complexType>

  <s:complexType name="cEstado">

    <s:sequence>

      <s:element minOccurs="0" maxOccurs="1" name="IdEstado" type="s:string" />

      <s:element minOccurs="0" maxOccurs="1" name="Estado" type="s:string" />

      <s:element minOccurs="0" maxOccurs="1" name="Err" type="s:string" />

    </s:sequence>

  </s:complexType>

どんな助けでも大歓迎です..

ありがとう

4

0 に答える 0