Thread SOAP/WSDL Schema mit Array (0 answers)
Opened by martin.g at 2014-06-12 14:42

martin.g
 2014-06-12 14:42
#176007 #176007
User since
2013-09-20
40 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe das Problem, dass ich per SOAP an einen WebService anbinden muss, der eine schlechte/unvollständige WSDL zur Verfügung stellt. Der Request passt, aber als Response gibt es quasi nur einen eigenen Datentyp, der nicht näher spezifiziert ist.

Effektiv beinhaltet dieser Datentyp mehrere Maps (aus dem Apache XML Namespace), damit kann XML::Compile aber nicht umgehen. Ich will nun die WSDL anpassen, aber ich weiß nicht, wie ich im Schema angeben kann, dass der Node "item" unterschiedliche Datentypen im Bauch haben kann.

Code (xml): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
<return xsi:type="ns2:Map">
        <item>
                <key xsi:type="xsd:string">sessid</key>
                <value xsi:type="xsd:string">pnt8mmerku33tejr3fk64aoqc4</value>
        </item>
        <item>
                <key xsi:type="xsd:string">user</key>
                <value xsi:type="ns2:Map">
                        <item>
                                <key xsi:type="xsd:string">uid</key>
                                <value xsi:type="xsd:int">0</value>
                        </item>
                        <item>
                                <key xsi:type="xsd:string">hostname</key>
                                <value xsi:type="xsd:string">172.20.80.68</value>
                        </item>
                </value>
        </item>
</return>


Ungefähr so habe ich mir die Schema Description vorgestellt, aber das passt natürlich noch nicht, weil ich zweimal item unterschiedlich spezifiziere. Ich bräuchte eine Art Nummerierung - 1. item mit value string, 2. item mit value sequence oder so.

Code (xml): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<xsd:element name="return">
        <xsd:complexType>
                <xsd:sequence>
                        <xsd:element name="item" maxOccurs="1" minOccurs="1">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="key" type="xsd:string" maxOccurs="1" minOccurs="1"/>
                                                <xsd:element name="value" type="xsd:string"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="item" maxOccurs="1" minOccurs="1">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="key" type="xsd:string" maxOccurs="1" minOccurs="1"/>
                                                <xsd:element name="value" type="soap-enc:Array">
                                                        .....ERNEUTE ITEMS.....
                                                </xsd:element>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                </xsd:sequence>
        </xsd:complexType>
</xsd:element>


Kann mir jemand einen Fingerzeig geben?

Viele Grüße
Martin
Last edited: 2014-06-12 14:43:36 +0200 (CEST)

View full thread SOAP/WSDL Schema mit Array