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.
<xsd:element name="dane" type="xsd:string"> <xsd:annotation> <xsd:documentation xml:lang="pl">Tutaj są dane o schemacie zdefiniowanym w jednym z plików XSD</xsd:documentation> </xsd:annotation> </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:
<?xml version="1.0" encoding="UTF-8" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://jakisnamespace1" targetNamespace="http://jakisnamespace" elementFormDefault="qualified"> <xsd:element name="liczbaSkarg"> <xsd:annotation> <xsd:documentation>przykładowy element</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="rejon" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </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