Witam, piszę sobie klienta (i docelowo serwer) pod pewien webservice SOAP.
Jako parametr wywoływanych funkcji webservice'u będzie przesyłany jak również odbierany typ złożony (complex type). Chce wykorzystać funkcję Zend_Soap_Client::setClass() i Zend_Soap_Server::setClass() do mapowania typów złożonych na klasy PHP (w czystej bibliotece SOAP dla PHP to jest chyba opcja classMap). I tutaj wydaje mi się że sobie poradzę.

Jednak jednym z elementów przesyłanego komunikatu jest element o nazwie dane typu string i wychodzi na to, że będzie on zapisany w jednej z właściwośći klasy.
  1. <xsd:element name="dane" type="xsd:string">
  2. <xsd:annotation>
  3. <xsd:documentation xml:lang="pl">Tutaj są dane o schemacie zdefiniowanym w jednym z plików XSD</xsd:documentation>
  4. </xsd:annotation>
  5. </xsd:element>


Dla zawartośći tego elementu mam zdefiniowanych kilka schematów .xsd i odpowiadający mu XML się znajdzie w tym elemencie, np. taki XSD:
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  3. xmlns="http://jakisnamespace1"
  4. targetNamespace="http://jakisnamespace" elementFormDefault="qualified">
  5. <xsd:element name="liczbaSkarg">
  6. <xsd:annotation>
  7. <xsd:documentation>przykładowy element</xsd:documentation>
  8. </xsd:annotation>
  9. <xsd:complexType>
  10. <xsd:sequence>
  11. <xsd:element name="rejon" type="xsd:string"/>
  12. </xsd:sequence>
  13. </xsd:complexType>
  14. </xsd:element>
  15. </xsd:schema>

Jak widać jego zawartością jest typ złożony.
Czy da się też zrobić mapowanie zawartości tego elementu na jakąs klasę, żebym nie musiał parsować tego XML'a?? Jeśli tak to jak, a jeśli nie to może jakieś rady, które ułatwią mi pisanie?

Pozdrawiam