"We recently implemented the webservice interface from our vendors," Eric writes, "they're a large and generally well-respected software service firm."
"Their webservice returns SOAP messages — which is just fine — but instead of returning a useful XML string, it returns this."
<!-- ED: soap envelope omitted for readability -->
<string xmlns="urn:Initech.Global.Services">
<CompanyGetConnector>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="InitechGetConnector">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="employees">
<xs:complexType>
<xs:sequence>
<xs:element name="EmployerName" type="xs:string" minOccurs="0"/>
<xs:element name="Employee" type="xs:string" minOccurs="0"/>
<xs:element name="Firstname" type="xs:string" minOccurs="0"/>
<xs:element name="Prefix" type="xs:string" minOccurs="0"/>
<xs:element name="Lastname" type="xs:string" minOccurs="0"/>
<xs:element name="Org._unit" type="xs:string" minOccurs="0"/>
<xs:element name="Function" type="xs:string" minOccurs="0"/>
<xs:element name="E-mail_work" type="xs:string" minOccurs="0"/>
<xs:element name="Telephone_work" type="xs:string" minOccurs="0"/>
<xs:element name="Mobile_work" type="xs:string" minOccurs="0"/>
<xs:element name="Birthdate" type="xs:date" minOccurs="0"/>
<xs:element name="Hired_since__irt._yearsemployed_" type="xs:date" minOccurs="0"/>
<xs:element name="Image" type="xs:base64Binary" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<employees>
<EmployerName>
My Client
</EmployerName>
<Employee>
100001
</Employee>
[cut rest of employee info]
<Image>
Nx4U8fSs+0lLRRNjORrUg/495x23NWHYf6j8T/OqW7QnsndLp74jJ5p64q6XycDrWZYk4PPc
[cut rather large blob]
</Image>
</employees>
</CompanyGetConnector>
</string>
Eric continues, "while we can obviously write the code to extract the XML-encoded XML, decode it to XML, and then parse it as XML, we figured it'd be easier if they could just return XML in the first place. The vendor's response: it's actually better this way for future compatibility and, regardless, several customers already use it tihs way."