0

Ich bin ein Tweeter Beispiel in Fenstern Telefon zu schaffen und bekam NullReferenceExceptionXML Parsing Error in Window Phone

ich denke, es könnte sein, dass die Syntax auf der rechten Seite des Ausdrucks falsch ist, kann aber nicht sagen, was und Warum ..

Jeder hat eine Idee, warum dies zu einem Fehler führte?

.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

Können Sie den Stack-Trace wo die Ausnahme enthalten tritt in deinem Beitrag auf? Mein Glücksspiel ist, dass irgendwo in Ihren gepunkteten Ketten von Eigenschaften ein Nullobjekt ist. –

+0

Du hast Recht und hier ist die Ausnahme Detail: System.NullReferenceException wurde nicht behandelt Message = Nullreferenceexception Stacktrace: bei XmlApp.MainPage.twitter_DownloadStringCompleted (Object sender, DownloadStringCompletedEventArgs e) bei System.Net.WebClient.OnDownloadStringCompleted (DownloadStringCompletedEventArgs e) bei System.Net.WebClient.DownloadStringOperationCompleted (Objekt arg) um – JoeLA

+0

Ich habe diese beschreibende Fehlermeldung erhalten. Sie denken, dass einige Referenzen fehlen? data.System.Collections.Generic.IEnumerator .Current \t 'System.Collections.Generic.IEnumerable ' enthält keine Definition für 'System' und keine Erweiterungsmethode 'System' akzeptiert ein erstes Argument vom Typ 'System.Collections.Generic.IEnumerable ' könnte gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?) – JoeLA

Antwort

0

ich so etwas wie dies in der Regel tun, dann kann ich die Werte für null überprüfen danach:

 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; 
       } 
      } 
     }