none
Los datos del nivel de raíz no son válidos. Línea 1, posición 1. RRS feed

  • Pregunta

  • Tengo ésto escrito

                                      

          XElement x = XElement.Load("http://www.vigilia.com.es/v_I_g_I_l_I_a.rss");


                var entradas = from entrada in x.Descendants("item")

                               orderby entrada.Element("pubDate").Value ascending
                               select new
                               { 
                               Fecha =entrada.Element("pubDate").Value,
                               Título = entrada.Element("title").Value,
                               Link = entrada.Element("link").Value,
                               Categoría = entrada.Element("category").Value

                               };


               listado.Data = entradas.ToString() ;
               listado.DataBind(); // Listado es un xmldatasource

    Al intentar enlazar a un data list o grid view muestra siguiente error "los datos del nivel de raiz no son válidos Linea 1 posición 1"


    domingo, 6 de enero de 2013 14:29

Todas las respuestas

  • lo que esta fallando es el linq, el tema es que hasta que no haces el ToList() este no se ejecuta

    no se como sera el xml, pero valida que estan correctos los tag que defines

    intenta ir definiendo algo simple

     var entradas = (from entrada in x.Descendants("item")
    				   select new
    				   { 
    						Fecha =entrada.Element("pubDate").Value,
    				  
    				   }).ToList();

    pon un breskpoint y valida que funciona, si lo ahce ve agregando el resto de los campos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 6 de enero de 2013 19:38
  • Gracias Leandro; voy a intentarlo
    domingo, 6 de enero de 2013 19:41
  • He probado con el código sugerido y sigue dando el mismo tipo de error sin embargo el xml creo que es correcto.

    domingo, 6 de enero de 2013 20:03
  • si usas

     var entradas =  x.Descendants("item")

    y pasas esa linea de codigo para evaluar la variable "entradas" (por supuesto poniendo un breakpoint) puede validar que seelcciona nodos del tag item de forma correcta


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 6 de enero de 2013 23:30
  • Gracias Leandro, he procedido construyendo poco a poco y esto, finalmente, ha funcionado:

         XElement x = XElement.Load("http://www.vigilia.com.es/v_I_g_I_l_I_a.rss");
              var items =  from entrada in x.Descendants("item")

                                             orderby entrada.Element("pubDate").Value descending
                                             select new
                                             {
                                                 Fecha = entrada.Element("pubDate").Value,
                                                 Título = entrada.Element("title").Value,
                                                 Link = entrada.Element("link").Value,
                                                 Categoría = entrada.Element("category").Value

                                             };



              Grid.DataSource = items;
              Grid.DataBind();

    Nota: Si bien no ordena por fechas sino como una cadena

    Un saludo, agradecido

    lunes, 7 de enero de 2013 19:19