【问题标题】:Insert an XML SOAP response into a database将 XML SOAP 响应插入数据库
【发布时间】:2012-07-24 04:40:01
【问题描述】:

我已经花了几个小时试图为此找到一个内置函数,但我没有得到任何结果。

有人对如何将 XML SOAP 请求中的整个数据响应解析到数据库中有所经验吗?

我正在寻找的是一个内置的 PHP 函数来执行此操作,是否有执行此操作的函数?还是需要我自己做?

【问题讨论】:

  • 您的意思是转储原始 SOAP 响应 XML,或者您所说的 parse the whole data response 是什么意思?
  • 是的,我想将 SOAP 响应转换为插入到数据库中

标签: php xml soap simplexml


【解决方案1】:

虽然我不明白为什么有人真的想做这样的事情,但你可以通过extending the SoapClient class 来做。现在,您所要做的就是获取响应提供的 XML 字符串,然后用它做任何您想做的事情。

PS:如果您设置了'trace' => TRUE 标志,您可以直接调用$client->__getLastRequest(),正如here 所解释的那样,无需扩展SoapClient 类。

【讨论】:

  • 我的目标是,当我得到 SOAP 的响应时,我想将响应保存到数据库中,因此我想手动获取所有数据并使用它,我想使用内置的功能如果可能的话,就像您将 XML 文件导入 SQL 数据库时一样谢谢您的回答。
  • 那么,你想把一个XML文件的所有叶子节点都持久化到数据库吗?让我们看看......这将如何以通用方式工作?我的意思是 XML 可以在节点中的节点中具有节点... 数据库表通常是静态的。如果 XML 更改会发生什么?谁负责根据需要更改数据库结构? DB 结构是否应该适应 XML 结构的变化?如果响应 XML 省略了某些 SOAP 请求的某些节点(min_occurs="0")会发生什么?我们应该用 NULL 填充相应的表格单元格吗?
  • 虽然您可以选择复杂的 EAV DB 结构,但我很难想出一种通用的方式,您可以在其中实现一种机制,以在 DB 中反映 XML 中的任何结构变化。充其量,您可以在数据库中手动处理 XML 结构更改(如果发生),但您仍然必须处理数据类型错误和各种极端情况。话虽如此,如果 XML 具有复杂的结构,也许您可​​以使用某些工具自动将其 XSD 模式转换为 DB 表,但您仍然需要编写一些通用代码来遍历 XML 并将其持久化。
  • 谢谢你,Mihai,无论如何我只是按照你所说的那样计算它不是做我想要实现的目标的方法,所以我认为我最好的方法是将 XML 响应保存到一个目录中我的服务器,所以我可以随时使用它,并在 15 分钟后自动删除它,无论如何感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
相关资源
最近更新 更多