1

私はこのチュートリアルに従っています: http://www.developer.nokia.com/Community/Wiki/Employees_app_with_XML_parsing_and_messaging_in_WP7

私は自分の街のイベントを表示するこのアプリケーションを持っています。すべてのイベントには画像とタイトルがあり、イベントをクリックすると詳細ページに移動し、大きな画像、タイトル、イベントの説明などすべてが表示されますチュートリアルと同様で、実際にはかなりうまく機能しますが、問題はありますか? 1 つのイベントのみが表示されます。

ここで私が使用しているフィードを見ることができます:

http://th05.deviantart.net/fs70/PRE/f/2012/226/0/7/xml_by_javabak-d5b1d16.png

これは私のイベントクラスです:

namespace Bluey
{
   [XmlRoot("rss")]
   public class Eventi
   {
       [XmlArray("channel")]
       [XmlArrayItem("item")]
        public ObservableCollection<Evento> Collect { get; set; }
   }
}

これが私のイベントクラスです

namespace Bluey
{
  public class Evento
  {
    [XmlElement("title")]
    public string title { get; set; }
    [XmlElement("enclosure")]
    public string image { get; set; }
    [XmlElement("description")]
    public string description { get; set; }
  }
}

イベント クラスで [XmlElement("enclosure")] を [XmlElement("url")] に変更すると、すべてのイベントが取得されますが、画像は取得されません。

これは私のパーサーです

  public EventiPage()
    {
        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://www.applinesrl.com/appoggio/events/feed", UriKind.Absolute);
        downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(EventiDownloaded);
        downloader.DownloadStringAsync(uri);

    }

    void EventiDownloaded(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Result == null || e.Error != null)
        {
            MessageBox.Show("There was an error downloading the XML-file!");
        }
        else
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Eventi));
            XDocument document = XDocument.Parse(e.Result);
            Eventi eventi = (Eventi)serializer.Deserialize(document.CreateReader());
            EventiList.ItemsSource = eventi.Collect; 
        }
    }

どんな助けでも感謝します、アドバイスでtnx!

ディエゴ。

4

1 に答える 1

0

投稿したサンプル XML に基づいて、画像がエンクロージャ ノード内に埋め込まれているようです。したがって、Evento クラスは部分的に正しいです。あなたがしなければならないのはそのようなことです:

public class Enclosure
{
    [XmlElement("url")]
    public string url { get; set; }
}

public class Evento
{
    [XmlElement("title")]
    public string title { get; set; }
    [XmlElement("enclosure")]
    public Enclosure image { get; set; }
    [XmlElement("description")]
    public string description { get; set; }
}

画像の URL にアクセスする方法を示すために更新:

XmlSerializer serializer = new XmlSerializer(typeof(Eventi));
XDocument document = XDocument.Parse(e.Result);
Eventi eventi = (Eventi)serializer.Deserialize(document.CreateReader());
foreach (Evento obj in eventi.Collect)
{
    Debug.WriteLine("Title: {0}", obj.title);
    Debug.WriteLine("Img: {0}", obj.image.url); // Retrieving image URL
}

注: XML の値の一部は既に base64 でエンコードされた画像ですが、その他は URL です。したがって、それらを確認する必要があります。私のコードとあなたのxmlデータで取得したデータの画像キャプチャを添付してください。ここに画像の説明を入力

于 2012-08-13T13:10:46.963 に答える