【问题标题】:How to deal with the 'DataSet' data structure in php?如何处理 php 中的“DataSet”数据结构?
【发布时间】:2011-03-22 15:14:27
【问题描述】:

我正在尝试从 php 调用一个肥皂网络服务。

Web 服务返回一个 ADO.NET 数据集结构。 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 数据集包含一个或多个 ADO.NET 数据表,这些数据表又由一个或多个 ADO.NET 数据列和数据行组成,这些数据列和数据行在集合(数组)中返回。

一个简单的代码示例,其中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 中做同样的事情,但我需要帮助。

【问题讨论】:

标签: php .net activemq nusoap


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多