如何在php中处理'DataSet'数据结构?

时间:2011-03-22 15:14:28

标签: php .net activemq nusoap

我正在尝试从php调用soap webservice。

webservice返回ADO.NET DataSet结构。 PHP中是否有可以处理这种数据结构的库?如果是这样,他们叫什么,我在哪里可以找到他们?如果没有,请随时给出提示?

到目前为止,我有这个(使用ActiveMQ和NuSoap库):

/**
 * Create a new service instance
 * Provide ActiveMQ uri and the extended class name
 **/
$client = new Client('tcp://localhost:61613?tcpNoDelay=false', 'test');

/**
 * New service reference
 **/
$service = new ServiceProxy($client, 'ServiceName');

/* Service call */
$result = $service->get_clients();

get_clients()是一个执行实际服务调用的方法,它返回获取DataSet结构。我该如何操纵这个返回值?

例如,在.NET中,有一个DataSet类。 ADO.NET DataSet包含一个或多个ADO.NET DataTables,它们又由一个或多个ADO.NET DataColumns和DataRows组成,它们在集合(数组)中返回。

一个简单的代码示例,其中DataSet只包含一个DataTable,可以是:

/**
 * Here, the val variable will contain the data positioned in the 
 * first field of the first DataRow of the first DataTable 
 **/
string val = dataset.Table[0].Rows[0].ItemArray[0];

我想在PHP中做同样的事情,但我需要帮助。

1 个答案:

答案 0 :(得分:1)

我建议您尝试了解有关您正在使用的数据结构的更多信息。它很可能是某种形式的JSON或XML,可以通过大量的PHP xml和json处理库进行操作。

您的第一步是查看请求返回的数据并确定其格式。 Microsoft在MSDN库中以深度HERE记录ADO.NET API的数据集。这可以帮助您了解检查数据时所看到的内容。某些数据提供程序允许您以不同的格式访问相同的数据,具体取决于参数或类似函数系列。您是否有供应商API的文档?

接下来,在确定了格式并破译数据集架构的细节之后,您需要一个类来操作数据。如果您正在处理符合已发布标准的内容,则可以使用类似simpleXML,JSON或DOMXPath的内容。此类应将数据存储在受保护的成员变量中,并提供检查,迭代,加载,刷新,搜索等方法。您应该参考PHP手册的函数参考以获取帮助,并编写您需要的任何函数。我会一般性地编写它来处理任何类似的数据集并派生一个类来准确地公开我需要的特定应用程序的数据。

另一种方法是用.net语言编写COM组件来访问和操作数据,并通过PHP的COM扩展导入它的函数。如果数据格式是一个奇怪的专有Microsofty,我想我会选择这个选择。

第三种可能的方法只有在您具有对服务器的编程访问权限时才有效。如果您可以使服务提供商适应规范,Microsoft已发布了一个互操作性工具包,该工具包应该充当.net服务和PHP客户端之间的桥梁,使用一层代理对象将ado.net数据公开给PHP脚本。他们把RESTful这个词扔了很多,但我不确定他们的意思是什么。在Microsoft的互操作性HQ中查看OData SDK for PHP HERE(这里有关于PHP和其他Microsoft平台以及Azure,Silverlight,Bing等产品的信息)。正如我所说,我认为你需要数据提供者发出符合其标准的数据。也许它已经做到了。没有架构,我无法分辨!如果是这样,那么这是你最好的选择。 祝你好运!