Xamarin 中的 Xmlpullparser android

Xmlpullparser in Xamarin android

我正在尝试解析来自一个网站的 RSS 提要,但我在解析图像时遇到了困难。我想用该网站的图片替换我的占位符,当我尝试这样做时没有任何反应,我的占位符仍然存在,这是我来自 FeedService class:

的代码
        try
        {
            WebRequest webRequest = WebRequest.Create(url);
            WebResponse webResponse = webRequest.GetResponse();

            Stream stream = webResponse.GetResponseStream();
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(stream);

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDocument.NameTable);
            nsmgr.AddNamespace("dc", xmlDocument.DocumentElement.GetNamespaceOfPrefix("dc"));
            nsmgr.AddNamespace("content", xmlDocument.DocumentElement.GetNamespaceOfPrefix("content"));

            XmlNodeList itemNodes = xmlDocument.SelectNodes("rss/channel/item");

            for (int i = 0; i < itemNodes.Count; i++)
            {
                FeedItem feedItem = new FeedItem();

                if (itemNodes[i].SelectSingleNode("title") != null)
                {
                    feedItem.Title = itemNodes[i].SelectSingleNode("title").InnerText;
                }
                if (itemNodes[i].SelectSingleNode("image") != null)
                {
                    feedItem.Title = itemNodes[i].SelectSingleNode("image").InnerText;
                }

                if (itemNodes[i].SelectSingleNode("link") != null)
                {
                    feedItem.Link = itemNodes[i].SelectSingleNode("link").InnerText;
                }

                if (itemNodes[i].SelectSingleNode("pubDate") != null)
                {
                    feedItem.PubDate = Convert.ToDateTime(itemNodes[i].SelectSingleNode("pubDate").InnerText);
                }

                if (itemNodes[i].SelectSingleNode("dc:creator", nsmgr) != null)
                {
                    feedItem.Creator = itemNodes[i].SelectSingleNode("dc:creator", nsmgr).InnerText;
                }

                if (itemNodes[i].SelectSingleNode("category") != null)
                {
                    feedItem.Category = itemNodes[i].SelectSingleNode("category").InnerText;
                }

                if (itemNodes[i].SelectSingleNode("description") != null)
                {
                    feedItem.Description = itemNodes[i].SelectSingleNode("description").InnerText;
                }

                if (itemNodes[i].SelectSingleNode("content:encoded", nsmgr) != null)
                {
                    feedItem.Content = itemNodes[i].SelectSingleNode("content:encoded", nsmgr).InnerText;
                }
                else
                {
                    feedItem.Content = feedItem.Description;
                }

                feedItemsList.Add(feedItem);
            }
        }
        catch (Exception)
        {
            throw;
        }

        return feedItemsList;
    }
}
}

这是来自 FeedItemListAdapter class 的代码,我在其中尝试用网站上的图片替换占位符:

public override View GetView(int position, View convertView, ViewGroup parent)
{
        var feedItem = this.feedsList[position];

        var view = (convertView ?? context.LayoutInflater.Inflate(Resource.Layout.FeedItemListItemLayout, parent, false)) as LinearLayout;

        view.FindViewById<TextView>(Resource.Id.title).Text = feedItem.Title.Length < 51 ? feedItem.Title : feedItem.Title.Substring(0, 50) + "...";
        view.FindViewById<TextView>(Resource.Id.creator).Text = feedItem.Creator;
        view.FindViewById<TextView>(Resource.Id.pubDate).Text = feedItem.PubDate.ToString("dd/MM/yyyy HH:mm");

        ImageView imageView = view.FindViewById<ImageView>(Resource.Id.placeholder); 
        Koush.UrlImageViewHelper.SetUrlDrawable (imageView, feedItem.Image, Resource.Drawable.Placeholder);

        return view;
    }
}
}

this is how it looks after I run it!

有人可以帮忙吗?

这可能是因为您在解析 RSS 图片节点的代码中有一个小错误:

feedItem.Title = itemNodes[i].SelectSingleNode("image").InnerText;

应该是图片而不是你设置的标题属性:

feedItem.Image = itemNodes[i].SelectSingleNode("image").InnerText;