Ошибка синтаксического анализа XML в Window Phone - PullRequest
0 голосов
/ 03 апреля 2012

Я создаю пример твитера в оконном телефоне и получил NullReferenceException

Я думаю, что это может быть неправильный синтаксис в правой части выражения, но не могу сказать, что и почему..

Кто-нибудь имеет представление, почему это привело к ошибке?

.xaml.cs:

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        string url = "http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=noradio";

        WebClient twitter = new WebClient();
        twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitter_DownloadStringCompleted);
        twitter.DownloadStringAsync(new Uri(url));
    }

    void twitter_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error != null)
            return;

        XElement xmlTweets = XElement.Parse(e.Result);

        listBox1.ItemsSource = from tweet in xmlTweets.Descendants("Status")

        select new TweeterItem
        {
            ImageSource = tweet.Element("user").Element("profile_image_url").Value,
            Message = tweet.Element("text").Value,
            UserName = tweet.Element("user").Element("screen_name").Value,
        };
    } 

.xaml:

<ListBox Height="521" HorizontalAlignment="Left" Margin="0,131,0,0" Name="listBox1" VerticalAlignment="Top" Width="476">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="132">
<Image Source="{Binding ImageSource}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/>
<StackPanel Width="370">
<TextBlock Text="{Binding UserName}" Foreground="#FFC8AB14" FontSize="28" />
<TextBlock Text="{Binding Message}" TextWrapping="Wrap" FontSize="24" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

1 Ответ

0 голосов
/ 21 июня 2012

Обычно я делаю что-то вроде этого, затем я могу проверить значения на ноль:

        XmlReader xmlReader = XmlReader.Create(e.Result as Stream);
        while (xmlReader.Read())
        {
            if (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                    case "profile_image_url":
                        ImageSource = xmlReader.ReadInnerXml();
                        break;
                    case "text":
                        Message = xmlReader.ReadInnerXml();
                        break;
                    case "screen_name":
                        UserName = xmlReader.ReadInnerXml();
                        break;
                }
            }
        }
...