none
Consumir datos de Web Service RRS feed

  • Pregunta

  • Hola a todos!!..

    tengo un gran problema con un web service para capturar la info que envia, ya he logrado obtener el xml de datos;

    <?xml version="1.0" encoding="utf-16"?>
    <DataTable>
      <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
          <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element name="Table">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="MES" type="xs:string" minOccurs="0" />
                    <xs:element name="ID_ENCUESTA" type="xs:string" minOccurs="0" />
                    <xs:element name="FECHA_ENCUESTA" type="xs:string" minOccurs="0" />
                    <xs:element name="ID_EVENTO" type="xs:decimal" minOccurs="0" />
                    <xs:element name="CODACT" type="xs:string" minOccurs="0" />
                    <xs:element name="TIPODEEVENTO" type="xs:string" minOccurs="0" />
                    <xs:element name="FECHA_INGRESO" type="xs:string" minOccurs="0" />
                    <xs:element name="FECHA_FACTURA" type="xs:string" minOccurs="0" />
                    <xs:element name="FECHA_ENTREGA" type="xs:string" minOccurs="0" />
                    <xs:element name="TIPOCLIENTE" type="xs:string" minOccurs="0" />
                    <xs:element name="RUT" type="xs:string" minOccurs="0" />
                    <xs:element name="NOMBRECOMPLETO" type="xs:string" minOccurs="0" />
                    <xs:element name="DIRECCIONRESIDENCIA" type="xs:string" minOccurs="0" />
                    <xs:element name="TXTNRO" type="xs:string" minOccurs="0" />
                    <xs:element name="DEPTOCASAOF" type="xs:string" minOccurs="0" />
                    <xs:element name="PROVINCIA" type="xs:string" minOccurs="0" />
                    <xs:element name="DISTRITO" type="xs:string" minOccurs="0" />
                    <xs:element name="DEPARTAMENTO" type="xs:string" minOccurs="0" />
                    <xs:element name="TELEFONO" type="xs:string" minOccurs="0" />
                    <xs:element name="TELEFONOCENTRAL" type="xs:string" minOccurs="0" />
                    <xs:element name="CELULAR" type="xs:string" minOccurs="0" />
                    <xs:element name="EMAILPROPIETARIO" type="xs:string" minOccurs="0" />
                    <xs:element name="FECHANACIMIENTO" type="xs:dateTime" minOccurs="0" />
                    <xs:element name="RUTUSUARIO" type="xs:string" minOccurs="0" />
                    <xs:element name="USUARIO" type="xs:string" minOccurs="0" />
                    <xs:element name="DIRECCION_USUARIO" type="xs:string" minOccurs="0" />
                    <xs:element name="NUMERO_U" type="xs:string" minOccurs="0" />
                    <xs:element name="DPTO_U" type="xs:string" minOccurs="0" />
                    <xs:element name="TELEFONO_U" type="xs:string" minOccurs="0" />
                    <xs:element name="TELEFONOCENTRAL_U" type="xs:string" minOccurs="0" />
                    <xs:element name="CELULAR_U" type="xs:string" minOccurs="0" />
                    <xs:element name="MAIL_U" type="xs:string" minOccurs="0" />
                    <xs:element name="VIN" type="xs:string" minOccurs="0" />
                    <xs:element name="MODELO" type="xs:string" minOccurs="0" />
                    <xs:element name="PATENTE" type="xs:string" minOccurs="0" />
                    <xs:element name="MARCASINGLE" type="xs:string" minOccurs="0" />
                    <xs:element name="MARCAGRUPO" type="xs:string" minOccurs="0" />
                    <xs:element name="KMREAL" type="xs:string" minOccurs="0" />
                    <xs:element name="DESCRIPCION" type="xs:string" minOccurs="0" />
                    <xs:element name="MONTOMANTENCION" type="xs:string" minOccurs="0" />
                    <xs:element name="RUTCONCESIONARIO" type="xs:string" minOccurs="0" />
                    <xs:element name="CONCESIONARIO" type="xs:string" minOccurs="0" />
                    <xs:element name="NOMBRELOCAL" type="xs:string" minOccurs="0" />
                    <xs:element name="NOMBREEJECUTIVO" type="xs:string" minOccurs="0" />
                    <xs:element name="FECHA_CREACION_FISICA" 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">
        <DocumentElement>
          <Table diffgr:id="Table1" msdata:rowOrder="0">
            <MES>July</MES>
            <ID_ENCUESTA />
            <FECHA_ENCUESTA />
            <ID_EVENTO>6966095</ID_EVENTO>
            <CODACT />
            <TIPODEEVENTO>Mant. Programada</TIPODEEVENTO>
            <FECHA_INGRESO>12/07/2013</FECHA_INGRESO>
            <FECHA_FACTURA>12/07/2013</FECHA_FACTURA>
            <FECHA_ENTREGA>12/07/2013</FECHA_ENTREGA>
            <TIPOCLIENTE>Persona Natural</TIPOCLIENTE>
            <RUT>43433333</RUT>
            <NOMBRECOMPLETO>link link link</NOMBRECOMPLETO>
            <DIRECCIONRESIDENCIA>AV. XXX</DIRECCIONRESIDENCIA>
            <TXTNRO>.</TXTNRO>
            <DEPTOCASAOF>.</DEPTOCASAOF>
            <PROVINCIA>lim</PROVINCIA>
            <DISTRITO>at</DISTRITO>
            <DEPARTAMENTO>jul</DEPARTAMENTO>
            <TELEFONO>01 34343</TELEFONO>
            <TELEFONOCENTRAL>01 4343</TELEFONOCENTRAL>
            <CELULAR>01 43434343</CELULAR>
            <EMAILPROPIETARIO>dfsfss@hotmail.com</EMAILPROPIETARIO>
            <RUTUSUARIO />
            <USUARIO>fsf fsfs sfsfs fsf</USUARIO>
            <DIRECCION_USUARIO />
            <NUMERO_U />
            <DPTO_U />
            <TELEFONO_U />
            <TELEFONOCENTRAL_U />
            <CELULAR_U />
            <MAIL_U />
            <VIN>KNADN512AD6823145</VIN>
            <MODELO>RIO</MODELO>
            <PATENTE>D5D-282</PATENTE>
            <MARCASINGLE>KIA</MARCASINGLE>
            <MARCAGRUPO>KP</MARCAGRUPO>
            <KMREAL>5039</KMREAL>
            <DESCRIPCION />
            <MONTOMANTENCION />
            <RUTCONCESIONARIO>242323232</RUTCONCESIONARIO>
            <CONCESIONARIO>xxxxxxxxxxxxxxx</CONCESIONARIO>
            <NOMBRELOCAL>xxxxxxxxxxxxx</NOMBRELOCAL>
            <NOMBREEJECUTIVO>xxxxxxxxxxx</NOMBREEJECUTIVO>
            <FECHA_CREACION_FISICA>15/07/2013</FECHA_CREACION_FISICA>
          </Table>
        </DocumentElement>
      </diffgr:diffgram>
    </DataTable>

    Cuando genero el "Data task Flow" y coloco un Xml Source y por ultimo después de definir el tipado correctamente; no recupera ningún dato. Espero puedan apoyarme.

    Saludos

    Lincoln VS

    martes, 16 de julio de 2013 15:58

Respuestas

  • Hola Lincoln,

    Deberías realizar los pasos siguientes:

    1) Crear dos variables:

    a) objXML: Variable string que almacena el string XML con el resultado del webservice.

    b) objTabla: Variable que almacenará la tabla con los datos cargados del fichero XML.

    2) Guardar el resultado del web service (el fichero XML) en una variable de tipo string.

    3) Cargar el contenido de la variable en un dataset, mediante un Tarea Script. Deberías ejecutar algo como esto:

    public void Main()
    {
    DataSet dsDatos=Dts.Variables["objTabla"].Value;
    String xmlDatos=Dts.Variables["objXML"].Value;
    System.IO.StringReader xmlSR = new System.IO.StringReader(xmlDatos);
    
    dsDatos.LoadXML(xmlSR,XmlReadMode.ReadSchema);
    Dts.TaskResult = (int)ScriptResults.Success;
    }

    4) Obtener la información de los registros almacenados en la variable objTabla. Aquí tienes un ejemplo: http://beyondrelational.com/modules/2/blogs/106/posts/11133/ssis-reading-object-variable-in-script-task.aspx

    ¡Espero que te sirva!

    Saludos.


    Ferran Chopo
    MCPD Web, MCSE: Data Platform
    Web: http://www.ferranchopo.com Twitter: @fchopo

    • Marcado como respuesta Lincoln_VS miércoles, 17 de julio de 2013 15:58
    miércoles, 17 de julio de 2013 9:27

Todas las respuestas

  • Hola Lincoln,

    Deberías realizar los pasos siguientes:

    1) Crear dos variables:

    a) objXML: Variable string que almacena el string XML con el resultado del webservice.

    b) objTabla: Variable que almacenará la tabla con los datos cargados del fichero XML.

    2) Guardar el resultado del web service (el fichero XML) en una variable de tipo string.

    3) Cargar el contenido de la variable en un dataset, mediante un Tarea Script. Deberías ejecutar algo como esto:

    public void Main()
    {
    DataSet dsDatos=Dts.Variables["objTabla"].Value;
    String xmlDatos=Dts.Variables["objXML"].Value;
    System.IO.StringReader xmlSR = new System.IO.StringReader(xmlDatos);
    
    dsDatos.LoadXML(xmlSR,XmlReadMode.ReadSchema);
    Dts.TaskResult = (int)ScriptResults.Success;
    }

    4) Obtener la información de los registros almacenados en la variable objTabla. Aquí tienes un ejemplo: http://beyondrelational.com/modules/2/blogs/106/posts/11133/ssis-reading-object-variable-in-script-task.aspx

    ¡Espero que te sirva!

    Saludos.


    Ferran Chopo
    MCPD Web, MCSE: Data Platform
    Web: http://www.ferranchopo.com Twitter: @fchopo

    • Marcado como respuesta Lincoln_VS miércoles, 17 de julio de 2013 15:58
    miércoles, 17 de julio de 2013 9:27
  • Muchas gracias, lo unico que tal vez me estaba preocupando seria la cantidad de info, por un tema de desbordamiento de la cadena xml, espero eso no suceda.

    Y nuevamente gracias.

    Lincoln VS

    miércoles, 17 de julio de 2013 16:07