2012-07-25 57 views
0

我花了幾個小時試圖爲此找到內置函數,但沒有得到任何結果。將XML SOAP響應插入到數據庫中

有沒有人有關於如何解析從SOAP SOAP請求到數據庫的整個數據響應的一些經驗?

我在找的是一個內置的PHP函數來做到這一點,有沒有一個函數來做到這一點?還是我需要我自己做?

+1

你的意思是轉儲原始的SOAP響應XML,或者你解析整個數據響應是什麼意思? – mellamokb 2012-07-25 17:14:38

+0

是的,我想將SOAP響應轉換爲插入到數據庫中 – thegrede 2012-07-25 17:15:43

回答

0

雖然我不明白爲什麼有人會真的想要做這樣的事情,你可以通過extending the SoapClient class做到這一點。現在,您只需獲取響應提供的XML字符串並根據需要執行任何操作。

PS:如果您設置了'trace' => TRUE標誌,則可以直接撥打$client->__getLastRequest(),如here所述,而無需擴展SoapClient類。

+0

我的目標是,當我得到SOAP的響應時,我想將響應保存到數據庫中,而不是通過manuelly抓取所有數據並使用它進行操作如果可能的話,希望使用內置函數來完成它,就像將XML文件導入到SQL數據庫時一樣感謝您的回答。 – thegrede 2012-07-25 18:31:42

+0

因此,您想要將XML文件的所有葉節點保存到數據庫中?讓我們看看......這將如何以通用的方式工作?我的意思是XML中的節點中可以有節點...數據庫表通常是靜態的。如果XML更改會發生什麼?誰負責根據需要更改數據庫結構?數據庫結構是否適應XML結構變化?如果響應XML爲某些SOAP請求省略某些節點(min_occurs =「0」),會發生什麼情況?我們應該用NULL填充相應的表格單元嗎? – 2012-07-25 21:55:54

+0

雖然您可以選擇一個複雜的EAV DB結構,但我很難想到一種通用的方法,您可以在其中實現一種機制,該機制在DB中反映XML中的任何結構更改。充其量,您可以在數據庫中手動處理XML結構更改(如果它們發生的話),但仍然必須處理數據類型錯誤和各種各樣的情況。話雖如此,如果XML有一個複雜的結構,也許你可以用一些工具自動地將它的XSD模式轉換爲數據庫表,但是你仍然需要編寫一些通用的代碼來遍歷XML並保存它。 – 2012-07-25 22:09:57