将Web服务对象转换为数据表 [英] Convert a web service object to a datatable

查看:71
本文介绍了将Web服务对象转换为数据表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好



我需要将此网络服务结果的每一项转换为数据表



 <   SOAP-ENV:Envelope     SOAP-ENV:encodingStyle   =  http://schemas.xmlsoap.org/soap/encoding/    xmlns:SOAP- ENV   =  http://schemas.xmlsoap.org/soap/envelope/    xmlns:ns1   =  http://bluxxx.xxxxxxxxs.net/LFA/confirmRcv3.php    xmlns:xsd   =  http ://www.w3.org/2001/XMLSchema    xmlns:SOAP-ENC   =  http://schemas.xmlsoap.org/soap/encoding/    xmlns:xsi   =  http://www.w3.org/2001/XMLSchema-instance >  
< SOAP-ENV:正文 >
< ns1:ControlreciboResponse >
< return SOAP-ENC:arrayType = xsd:string [6] xsi:type = SOAP-ENC:数组 >
< item xsi:type = xsd:string < span class =code-keyword>> < ![CDATA [< item > < TipoDocto < span class =code-keyword>> OCN < / TipoDocto >
< Documento > 39147 < / Documento >
< Codigo > 17429 < / Codigo >
< Cantidad_Recibida > 12 < / Cantidad_Recibida >
< Estatus > Disponible < / Estatus > < / item > < / item >
< item xsi:type = xsd:string > < ![CDATA [< item > < TipoDocto > OCN < / TipoDocto >
< Documento > 39147 < / Documento >
< Codigo > 32757 < / Codigo >
< Cantidad_Recibida > 13 < / Cantidad_Recibida >
< Estatus > Disp onible < / Estatus > < span class =code-keyword>< / item > < / item >
< span class =code-keyword>< item xsi:type = xsd:string > < ![CDATA [< item > < TipoDocto > OCN < / TipoDocto >
< Documento > 39147 < / Documento >
< Codigo > 48156 < / Codigo >
< Cantidad_Recibida > 6 < / Cantidad_Recibida >
< Estatus > Disponible < / Estatus > < / item > < / item >
< item xsi:type = xsd:string > < ![CDATA [< item > < TipoDocto > OCN < span class =code-keyword>< / TipoDocto >
< Documento > 39147 < span class =code-keyword>< / Documento >
< Codigo > 52314 < span class =code-keyword>< / Codigo >
< Cantidad_Recibida > 7 < span class =code-keyword>< / Cantidad_Recibida >
< Estatus > Disponible < / Estatus > < / item > < / item >
< item xsi:type = xsd:string > < ![CDATA [< item > < TipoDocto > OCN < / TipoDocto >
< Documento > 39147 < / Documento >
< Codigo > 55327 < / Codigo >
< Cantidad_Recibida > 10 < / Cantidad_Recib ida >
< Estatus > Disponible < / Estatus > < / item > < / item >
< item xsi:type = < span class =code-keyword> xsd:string > < < span class =code-leadattribute>![CDATA [< item > < TipoDocto > OCN < / TipoDocto >
< Documento > 39147 < / Documento >
< Codigo > 57813 < / Codigo >
< Cantidad_Recibida > 6 < / Cantidad_Recibida >
< Estatus > Disponible < / Estatus > < / item > < ; / item >
< / return >
< / ns1:ControlreciboResponse >
< / SOAP-ENV:Body >
< < span class =code-leadattribute> / SOAP-ENV:Envelope >





这是我的程序



  private   void  btnLecturaBLur_Click( object  sender,EventArgs e)
{
// 获取Web服务方法
recibodlxService serviceProxy = new recibodlxService();

object [] sXmlProp = serviceProxy.Controlrecibo();

// 创建数据表
DataTable dtx;

// 创建数据行
DataRow dr = dtx。 NEWROW();
foreach object item in sXmlProp)
{
// 这里,我该如何向a添加项目行
}

dtx.Rows.Add(dr);





或者,我可以使用dataTable

 dtx.ReadXml(读者)

??



我是什么尝试过:



我试着这样做:



< pre lang =C#> PropertyInfo [] Prop = serviceProxy.Controlrecibo()。GetType()。GetElementType()。GetProperties();
DataTable dt = CreateDataTable(Prop);
DataRow dr = dt.NewRow();

foreach (PropertyInfo pi in Prop)
{
dr [pi.Name] = pi.GetValue(sXmlProp, null );
}
dt.Rows.Add(dr);



显示的错误是对象与目标类型不匹配。

解决方案

当您将webservice添加为Web引用时,visual studio会自动生成对象,这些对象是webservice返回的数据的容器。你不需要自己解析xml。识别这些对象,调用web服务来填充它们,它们将是一个逐项迭代的集合,如下所示:



foreach(ControlreciboResponseCollection中的ControlreciboResponse项目){



DataRow dr = new DataRow()

dr [0] .value = item.TipoDocto;

dr [1] .value = item.Documento;

dr [2] .value = item.Codigo;

等...

dt .Rows.Add(dr);

}



问候。


hi everybody

I need to convert every item of this web service result to a dataTable

<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://bluxxx.xxxxxxxxs.net/LFA/confirmRcv3.php" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
      <ns1:ControlreciboResponse>
         <return SOAP-ENC:arrayType="xsd:string[6]" xsi:type="SOAP-ENC:Array">
            <item xsi:type="xsd:string"><![CDATA[<item><TipoDocto>OCN</TipoDocto>
                     <Documento>39147</Documento>
                     <Codigo>17429</Codigo>
                     <Cantidad_Recibida>12</Cantidad_Recibida>
                     <Estatus>Disponible</Estatus></item></item>
            <item xsi:type="xsd:string"><![CDATA[<item><TipoDocto>OCN</TipoDocto>
                     <Documento>39147</Documento>
                     <Codigo>32757</Codigo>
                     <Cantidad_Recibida>13</Cantidad_Recibida>
                     <Estatus>Disponible</Estatus></item></item>
            <item xsi:type="xsd:string"><![CDATA[<item><TipoDocto>OCN</TipoDocto>
                     <Documento>39147</Documento>
                     <Codigo>48156</Codigo>
                     <Cantidad_Recibida>6</Cantidad_Recibida>
                     <Estatus>Disponible</Estatus></item></item>
            <item xsi:type="xsd:string"><![CDATA[<item><TipoDocto>OCN</TipoDocto>
                     <Documento>39147</Documento>
                     <Codigo>52314</Codigo>
                     <Cantidad_Recibida>7</Cantidad_Recibida>
                     <Estatus>Disponible</Estatus></item></item>
            <item xsi:type="xsd:string"><![CDATA[<item><TipoDocto>OCN</TipoDocto>
                     <Documento>39147</Documento>
                     <Codigo>55327</Codigo>
                     <Cantidad_Recibida>10</Cantidad_Recibida>
                     <Estatus>Disponible</Estatus></item></item>
            <item xsi:type="xsd:string"><![CDATA[<item><TipoDocto>OCN</TipoDocto>
                     <Documento>39147</Documento>
                     <Codigo>57813</Codigo>
                     <Cantidad_Recibida>6</Cantidad_Recibida>
                     <Estatus>Disponible</Estatus></item></item>
         </return>
      </ns1:ControlreciboResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>



This is My procedure is

private void btnLecturaBLur_Click(object sender, EventArgs e)
{
    //get the web service method
     recibodlxService serviceProxy = new recibodlxService();

     object[] sXmlProp = serviceProxy.Controlrecibo();

    //create the datatable
    DataTable dtx;

     //create the datarow
    DataRow dr = dtx.NewRow();
     foreach (object item in sXmlProp)
     {
         //here, HOW Do I do TO add an item to a row
     }

     dtx.Rows.Add(dr);



Or, can I use dataTable

dtx.ReadXml(reader)

??

What I have tried:

I´m Tried to do something like this:

PropertyInfo[] Prop = serviceProxy.Controlrecibo().GetType().GetElementType().GetProperties();
  DataTable dt = CreateDataTable(Prop);
  DataRow dr = dt.NewRow();

  foreach (PropertyInfo pi in Prop)
  {
      dr[pi.Name] = pi.GetValue(sXmlProp, null);
  }
  dt.Rows.Add(dr);


the error that shows me is "The object does not match with the target type."

解决方案

when you add the webservice as web reference, visual studio automatically genereta the objects that are the "containers" for the data the webservice returns. you dont need to parse the xml by your self. identify those objects, call the webservice to fill them, they will be a Collection that you iterate item by item like this:

foreach (ControlreciboResponse item in ControlreciboResponseCollection){

DataRow dr = new DataRow()
dr[0].value =item.TipoDocto;
dr[1].value =item.Documento;
dr[2].value =item.Codigo;
etc...
dt.Rows.Add(dr);
}

regards.


这篇关于将Web服务对象转换为数据表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆