2009-12-17 63 views
4

我正在用PHP 5.2編寫一個SoapServer以將空缺列表返回給另一個應用程序。我的WSDL文檔需要沿着線的複雜類型:構建PHP數組以供在WSDL中使用SOAP

<xsd:element name="Vacancies">        
    <xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="Vacancy" type="ns:VacancyType" minOccurs="0" maxOccurs="unbounded"></xsd:element> 
    </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

我的功能產生大的,嵌套的數組來組裝各空缺,然後返回數組的數組(即:空位)到SoapServer的。

不幸的是,每個數組都被編入索引。因此,空缺職位中的每個VacancyType元素都有一個唯一索引。這似乎將WSDL定義關閉,並且返回給我的數據只是拋出一個解析錯誤。我通常使用關聯對數組的關聯數組,但因爲我正在處理n個VacancyType實例,因爲沒有唯一的引用,所以無法工作。

是否有這種場景的已知解決方法(例如:也許是一個對象),或者我應該重新我的WSDL文檔以迎合索引數組?

謝謝

+0

你能解釋一下你的數據結構比較好?空缺和類型之間有什麼關係?空缺可以有多種類型?也許你可以將數組的樣本添加到問題中。 – 2009-12-17 15:00:02

+0

對不起,如果這有點讓人誤解,VacancyType是指複雜類型的XSD定義(我不認爲我需要詳細說明它)。對於所有意圖和目的,它可能被稱爲空缺。 這個函數應該返回類似的響應: *空缺 * VacancyType *內此數據... * VacancyType *內此數據... * VacancyType *內此數據... 我使用一個數組構建它,並讓SoapServer將其轉換爲基於WSDL的適當響應,但它正在與一個索引的VacancyType數組糾纏在一起 – johan 2009-12-21 10:22:16

+0

問題在哪裏出現?將您的數組封裝到SOAPRequest中?這不就是一系列嵌套的空缺對象嗎? – awithrow 2009-12-21 19:37:54

回答

0

畢竟,我已經找到了解決辦法:我通過mysefl構造XML和使用

new SoapVar('<myitem>...</myitem><myitem>...</myitem>', XSD_ANYXML);