0

Я создаю пример твитера в окне телефона и получил NullReferenceExceptionXML Синтаксический Ошибка Window Phone

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

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

.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

Вы правы, а вот деталь исключения: System.NullReferenceException было необработанное сообщения = NullReferenceException StackTrace: на XmlApp.MainPage.twitter_DownloadStringCompleted (отправитель Object, DownloadStringCompletedEventArgs е) в System.Net.WebClient.OnDownloadStringCompleted (DownloadStringCompletedEventArgs e) at System.Net.WebClient.DownloadStringOperationCompleted (Object arg) at – JoeLA

+0

Я получил это более описательное сообщение об ошибке. Вы считаете, что некоторые ссылки отсутствуют? data.System.Collections.Generic.IEnumerator .Current \t 'System.Collections.Generic.IEnumerable ' не содержит определения для 'System' и никакого метода расширения 'System', принимающего первый аргумент типа 'System.Collections.Generic.IEnumerable ' можно найти (вам не хватает директивы using или ссылки на сборку?) – JoeLA

ответ

0

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

 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; 
       } 
      } 
     } 
Смежные вопросы