如何获取在asp.net webservice中生成的delphi中的数据集

时间:2013-05-16 06:50:42

标签: c# asp.net web-services delphi delphi-7

我在asp.net中写了一个webservice,它有select函数,它的参数是一个字符串,像这样返回一个dataset

[WebMethod]
public DataSet Select(string query)
{
    DataTable dt = new DataTable();

    dt.Columns.Add("fname");
    dt.Columns.Add("lname");
    dt.Rows.Add("mehdi", "nine");
    dt.Rows.Add("ali", "javan");
    DataSet ds = new DataSet();
    ds.Tables.Add(dt);
    return ds;
}

当我看到它的xml输入时,它是这样的:

<s:element name="Select">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="query" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SelectResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SelectResult">
<s:complexType>
<s:sequence>
<s:element ref="s:schema"/>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>

在xml文件中我们可以看到它的输出是SelectResult。如何将其转换为delphi7中的数据源? 任何想法?

1 个答案:

答案 0 :(得分:0)

DaTaSet不好作为不使用.net的客户端的webservice返回类型。您可以尝试在此处重新调整XML ..

[WebMethod]
public string Select(string query)
{
    // your code
    return ds.GetXml();
}

这将为您提供XMl,如下所示

<NewDataSet>
  <Table1>
    <fname>mehdi</fname>
    <lname>nine</lname>
  </Table1>
  <Table1>
    <fname>ali</fname>
    <lname>javan</lname>
  </Table1>
</NewDataSet>

希望您可以将其处理为用作DataSource。

如果您需要缩进XML,请检查此答案What is the simplest way to get indented XML with line breaks from XmlDocument?