none
Problema con aplicacion RSS RRS feed

  • Pregunta

  • Ocurre que estoy modificando una aplicacion ya creada para que muestre los rss de mi web. El problema ocurre cuando termino de borrar el codigo innecesario (segun yo), y le doy a correr la aplicacion en Emulator. Entonces me da el siguiente error, solo en un pedazo de codigo:

     

    martes, 30 de agosto de 2011 21:24

Respuestas

  • Buenas

    Como te indica Pedro, el problema ocurre al analizar el XML del RSS, en la sentencia linq algún campo que estás pidiendo no existe o no se llama exactamente así.

    Tienes que tener cuidado con el nombre de los elementos de RSS, porque es sensible a minusculas/mayusculas, si el RSS tiene un campo "Creator" y tu en codigo buscas "creator" te dará la excepción porque no existe el campo.

    EDITO:

    Estoy viendo la captura, y veo que primero haces:

    var channel = rssFeed.Descendants("channel")


    Y a continuación haces la consulta LINQ sobre la variable channel, en un RSS ESTANDARD El Elemento Channel no contiene los items, el elemento Channel solo contiene la información general del Rss. deberías ejecutar la LINQ sobre rssFeed.Descendants("items"):

    var elementos = (from item in rssFeed.Descendants("item")
                 select new ElementoEntradaRss
                 {
                   //El resto de codigo aqui
                 });


    Esto sería lo correcto.

    Si quieres ver como funciona un lector de Rss completo mira mi proyecto de codeplex: http://wp7basicapp.codeplex.com

    Un saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    miércoles, 31 de agosto de 2011 15:23
    Moderador

Todas las respuestas

  • Hola Guillermo,

    Lo que te indica la exception  es que algo es nulo .Esto te puede pasar por que en el xml puede ser que no exista 

    guid,title,link,description o pubDate y al acceder a Value lance una ese error.

    Nos puedes mostrar el valor de response,  es decir el xml completo.

    Saludos,


    phurtado
    martes, 30 de agosto de 2011 22:40
  • Voy a intentar. Por ahora, muestro el xml completo (a mi entender es esto)

     

    <phone:PhoneApplicationPage 

        x:Class="CanalDeNoticiasMSDN.MainPage"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

        xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"

        xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 

        mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800" 

        d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"

        FontFamily="{StaticResource PhoneFontFamilyNormal}"

        FontSize="{StaticResource PhoneFontSizeNormal}"

        Foreground="{StaticResource PhoneForegroundBrush}"

        SupportedOrientations="Portrait"  Orientation="Portrait"

        shell:SystemTray.IsVisible="False">

     

        <!--LayoutRoot is the root grid where all page content is placed-->

        <Grid x:Name="LayoutRoot" Background="Transparent">

     

            <!--Panorama control-->

            <controls:Panorama Title="Rss" >

                <controls:Panorama.Background>

                    <ImageBrush ImageSource="PanoramaBackground.png"/>

                </controls:Panorama.Background>

                <!--Panorama item one-->

                    <controls:PanoramaItem Header="Noticias">

                    <!--Double line list with text wrapping-->

                    <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Noticias}"

                             SelectionChanged="ListBox_SelectionChanged_1">

                        <ListBox.ItemTemplate>

                            <DataTemplate>

                                <StackPanel Margin="15,0,0,17">

                                    <TextBlock Text="{Binding Title}" 

                                                   TextWrapping="Wrap" 

                                                   Style="{StaticResource PhoneTextTitle2Style}"/>

                                    <TextBlock Text="{Binding PubDate}"/>

                                </StackPanel>

                            </DataTemplate>

                        </ListBox.ItemTemplate>

                    </ListBox>

                </controls:PanoramaItem>

            </controls:Panorama>

        </Grid>

     

        <!--Panorama-based applications should not show an ApplicationBar-->

     

    </phone:PhoneApplicationPage>

     

     

     

    martes, 30 de agosto de 2011 23:35
  • Hola Guillermo,

    Ese no es :) es que lees y que te entra como parametro response metodo GetElements.

     

    Saludos,


    phurtado
    miércoles, 31 de agosto de 2011 1:49
  • Buenas

    Como te indica Pedro, el problema ocurre al analizar el XML del RSS, en la sentencia linq algún campo que estás pidiendo no existe o no se llama exactamente así.

    Tienes que tener cuidado con el nombre de los elementos de RSS, porque es sensible a minusculas/mayusculas, si el RSS tiene un campo "Creator" y tu en codigo buscas "creator" te dará la excepción porque no existe el campo.

    EDITO:

    Estoy viendo la captura, y veo que primero haces:

    var channel = rssFeed.Descendants("channel")


    Y a continuación haces la consulta LINQ sobre la variable channel, en un RSS ESTANDARD El Elemento Channel no contiene los items, el elemento Channel solo contiene la información general del Rss. deberías ejecutar la LINQ sobre rssFeed.Descendants("items"):

    var elementos = (from item in rssFeed.Descendants("item")
                 select new ElementoEntradaRss
                 {
                   //El resto de codigo aqui
                 });


    Esto sería lo correcto.

    Si quieres ver como funciona un lector de Rss completo mira mi proyecto de codeplex: http://wp7basicapp.codeplex.com

    Un saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    miércoles, 31 de agosto de 2011 15:23
    Moderador