2012-07-25 55 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