У меня проблема с PHP SoapClient. Объекты, сгенерированные клиентом, не имеют всех необходимых атрибутов.
В моем случае 2 элемента (описание, описание2) имеют одинаковый сложный тип (текст). У одного из них есть ограничение (описание). В полученном объекте PHP отсутствует аттрибут "language".
Пример из WSDL:
<xs:complexType name="Text">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="language" type="string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element maxOccurs="unbounded" minOccurs="1" name="description">
<xs:complexType>
<xs:simpleContent>
<xs:restriction base="tns:Text">
<xs:maxLength value="400"/>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="description2" type="tns:Text">
<xs:annotation>
<xs:documentation>...</xs:documentation>
</xs:annotation>
</xs:element>
Объекты в PHP
public 'description' =>
array (size=1)
0 =>
object(stdClass)[6]
public '_' => string 'some string' (length=17)
public 'description2' =>
array (size=1)
0 =>
object(stdClass)[7]
public '_' => string 'some other string' (length=1796)
public 'language' => string 'de_DE' (length=5)
WSDL действителен.
Я не могу изменить WSDL.
Карта типов для SoapClient не имеет никакого эффекта, поскольку тип не соответствует описанию.
Как получить атрибут языка в описании?