2014-10-21 3 views
1

Может кто-нибудь пожалуйста, скажите мне, как я могу разобрать этот адресСинтаксический RSS поток с использованием XML сериализатор

http://bitcast-r.v1.sjc1.bitgravity.com/objectinfo/MIB/radio/inbradio_play.xml

таким образом, что все элементы в кормах, кроме первого элемента должно быть отображено в listbox.I я не в состоянии понять, как разобрать первый элемент. Это код, который я использовал для синтаксического анализа. Но в этом случае я получал все элементы фида. Но мне не нужно получить первый элемент (то есть) torilive.How я могу разобрать, например, что я не должен получить первый элемент

MainPage.xaml.cs:

public MainPage() 
    { 
     InitializeComponent(); 
     // is there network connection available 


     if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) 
     { 
      MessageBox.Show("No network connection available!"); 
      return; 
     } 
     // start loading XML-data 
     WebClient downloader = new WebClient(); 
     Uri uri = new Uri("http://bitcast-r.v1.sjc1.bitgravity.com/objectinfo/MIB/radio/inbradio_play.xml", UriKind.Absolute); 
     downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(ChannelDownloaded); 
     downloader.DownloadStringAsync(uri); 
    } 

    void ChannelDownloaded(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Result == null || e.Error != null) 
     { 
      MessageBox.Show("There was an error downloading the XML-file!"); 
     } 
     else 
     { 
      // Deserialize if download succeeds 
      XmlSerializer serializer = new XmlSerializer(typeof(Channel)); 
      XDocument document = XDocument.Parse(e.Result); 
      Channel channel = (Channel)serializer.Deserialize(document.CreateReader()); 
      listBox.ItemsSource = channel.Collection; 
     } 
    } 

Channel.cs:

namespace Sample 
    { 
     [XmlRoot("rss")] 
     public class Channel 
    { 
     [XmlArray("channel")] 
     XmlArrayItem("item")] 
     public ObservableCollection<Items> Collection { get; set; } 
    } 
} 

Items.cs:

namespace Sample 
{ 
    public class Items 
    { 
     [XmlElement("title")] 
     public string title { get; set; } 

     [XmlElement("link")] 
     public string link { get; set; } 

     [XmlElement("image")] 
     public string image { get; set; } 
    } 
} 

Надеюсь, что кто-нибудь поможет. Большое спасибо.

+0

Опубликуйте код, который вы используете сейчас. –

+0

Да, сэр, я разместил код выше. – deepu

ответ

0

Хорошая программа :)


C#

void ChannelDownloaded(object sender, DownloadStringCompletedEventArgs e) 
{ 
    if (e.Result == null || e.Error != null) 
    { 
     MessageBox.Show("There was an error downloading the XML-file!"); 
    } 
    else 
    { 
     // Deserialize if download succeeds 
     XmlSerializer serializer = new XmlSerializer(typeof(Channel)); 
     XDocument document = XDocument.Parse(e.Result); 
     Channel channel = (Channel)serializer.Deserialize(document.CreateReader()); 


     // remove the first item 
     if (channel.Collection.Count > 0) 
      channel.Collection.RemoveAt(0); 

     this.myListBox.ItemsSource = channel.Collection;    
    } 
} 

XAML

<ListBox x:Name="myListBox"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border BorderThickness="0,0,0,1" BorderBrush="Red"> 
      <StackPanel> 
       <TextBlock Text="{Binding title}"></TextBlock> 
       <TextBlock Text="{Binding link}" Width="350"></TextBlock> 
       <Image Source="{Binding image}" Width="50" Height="50" HorizontalAlignment="Left" VerticalAlignment="Top"></Image> 
      </StackPanel> 
      </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Код в действии:

enter image description here


Вы можете изменить шаблон, чтобы получить желаемые результаты.

+0

Rearlly Я был очень благодарен вам. Но здесь у меня была еще одна проблема. Мне нужно воспроизвести первый звук предмета по умолчанию. Это означает, что мне нужно передать ссылку первого элемента в mediaelement.but, как я могу пройти. item в listbox Я использовал строку s = items.link. И передал s в mediaelement. MediaElement1.Source = new Uri (s, UriKind.Absolute); Mediaelement.play(); Но здесь я не получал.Как я могу передать ссылку на первый элемент в mediaelement. – deepu

+0

@deepu Ваш комментарий очень запутанный, вероятно, он заслуживает другого сообщения SO. Я думаю, что полностью ответил на ваш оригинальный вопрос. –

+0

Я да благодарю вас. – deepu

Смежные вопросы