如何将Web服务的返回消息分解为数组

时间:2018-02-05 11:07:31

标签: c# php xml web-services

我是网络服务领域的新手。我正在使用c#创建Web服务和php以使用该服务。当我传递简单的字符串消息时,它工作正常但是当我返回数据表时,生成的xml有点复杂,当我从php调用它时,它会生成一个奇怪的输出,我不明白如何从那。我使用的代码如下:
c#Web服务代码

[WebMethod]
public DataSet Get_SAC(string k)
{
    DataTable dt = Get("select * from SACMaster", "SacMaster");
    DataSet ds = new DataSet();
    ds.Tables.Add(dt);
    return ds;
}

注意:函数Get(字符串查询,字符串TableName)用于执行查询并从数据库中获取数据并设置数据表的名称。

我从此方法获得的XML

<DataSet xmlns="http://tempuri.org/">
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="SacMaster">
<xs:complexType>
<xs:sequence>
     <xs:element name="slno" type="xs:int" minOccurs="0"/>
     <xs:element name="serviceName" type="xs:string" minOccurs="0"/>
     <xs:element name="sacNo" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<SacMaster diffgr:id="SacMaster1" msdata:rowOrder="0">
    <slno>1</slno>
    <serviceName>HOUSEKEEPING/PANTRY BOY</serviceName>
    <sacNo>998533</sacNo>
</SacMaster>
<SacMaster diffgr:id="SacMaster2" msdata:rowOrder="1">
    <slno>2</slno>
    <serviceName>SECURITY GUARD</serviceName>
    <sacNo>998525</sacNo>
</SacMaster>
<SacMaster diffgr:id="SacMaster3" msdata:rowOrder="2">
    <slno>3</slno>
    <serviceName>Other Employment</serviceName>
    <sacNo>998519</sacNo>
</SacMaster>
</NewDataSet>
</diffgr:diffgram>
</DataSet>


使用网络服务的PHP代码

<?php
    $client = new SoapClient("http://localhost:49439/Service1.asmx?WSDL");
    $params1 = array( 'k'  => '202');
    $result2 = $client->Get_SAC($params1)->Get_SACResult;
    print_r($result2);
?>


PHP代码的输出

  

stdClass Object([schema] =&gt; [any] =&gt; 1HOUSEKEEPING / PANTRY BOY9985332SECURITY GUARD9985253Other Employment998519)

现在我的问题是如何将此输出转换为数组,如果生成XML文件存在问题,我该如何解决问题。

我想要的结果是

slno |Description               |Code
----------------------------------------
1    |HOUSEKEEPING/PANTRY BOY   |998533
2    |SECURITY GUARD            |998525
3    |Other Employment          |998519

0 个答案:

没有答案