none
Web Service retorna XML sin datos. RRS feed

  • Pregunta

  • Tengo varias funciones en donde hago consultas a base de datos y retorna un XML por Web Services. Todas funcionan bien excepto una. Que me retorna el siguiente XML

      <?xml version="1.0" encoding="utf-8" ?>
    - <DataSet xmlns="http://tempuri.org/">
    - <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:UseCurrentLocale="true">
    - <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded" />
      </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" />
      </DataSet>
    No se porque no me retorna la data, el query que utilizo esta bien definido. Alguien sabe que significa este XML?
    Gracias.
    viernes, 6 de agosto de 2010 17:41

Respuestas

  • Hasta el </ xs:schema >, lo que te está devolviendo no es un XML como tal sino un esquema XML que actúa como "validador" del XML con los datos de tu DataSet. Lo que sigue a partir del < diffgr:diffgram(...) ya son los datos, propiamente dicho; pero en tu caso nunca empieza el nodo < NewDataSet xmlns =" " > , lo que significa que la consulta no devuelve ningún registro, o sea es un dataset sin datos; como bien ya lo dijiste.

    Ahí podés hacer lo que dice Leandro o sino asignarle directamente al dataset con el método ReadXmlSchema .

    sábado, 7 de agosto de 2010 5:16

Todas las respuestas

  • hola

    has validado que la consulta que carga el dataset que retorna el webservice recupere registros que cargar ?

    podrias sino poner un registro a mano en ese dataset que se devuelve, para asi validar que se este enviando correctamente la info y solo es un tema de datos

    para agregar el registro harias

    DataRow row = ds.Tables[0].NewRow();

    row["campo1"] = valor;

    //resto de los campos

    ds.Tables[0].Rows.Add(row);

     

    Nota, el ejemplo esta en c#

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 7 de agosto de 2010 4:40
  • Hasta el </ xs:schema >, lo que te está devolviendo no es un XML como tal sino un esquema XML que actúa como "validador" del XML con los datos de tu DataSet. Lo que sigue a partir del < diffgr:diffgram(...) ya son los datos, propiamente dicho; pero en tu caso nunca empieza el nodo < NewDataSet xmlns =" " > , lo que significa que la consulta no devuelve ningún registro, o sea es un dataset sin datos; como bien ya lo dijiste.

    Ahí podés hacer lo que dice Leandro o sino asignarle directamente al dataset con el método ReadXmlSchema .

    sábado, 7 de agosto de 2010 5:16
  • De acuerdo con Lentucky, lo que te ha retornado es un esquema Xml.

    Debes revisar que la consulta este devolviendo datos.

    Esquema XML

    <?xml version="1.0" standalone="yes"?>
    <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:UseCurrentLocale="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="Table">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Codigo" type="xs:int" minOccurs="0" />
                  <xs:element name="Descripcion" type="xs:string" minOccurs="0" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:schema>

    lunes, 13 de junio de 2011 14:57