使用 c# 从 xml 附件标签中提取 url 值

Extracting url value from xml enclosure tag with c#

我正在尝试提取 url 的值,它基本上是附件标签中图像的 url,如下所示:

 <enclosure url="http://s3-us-west-1.amazonaws.com/s3cazinnet/2016/06/OZRK_KRAJINA_2016_5525.JPG?mtime=1465158486" length="" type="image/jpeg">

我不想用整个 class 来打扰您,所以我 post 只是部分代码。这是我试图获取 url:

值的代码部分
if (xmlNode[i].SelectSingleNode("enclosure:url", xmlNameSpaceManager) != null)
{
    var Url = xmlNode[i].Attributes["url"].Value;
    feedItem.Image = Url;
}

我想使用 Koush 的 UrlImageViewHelper 在列表视图中加载该图像,这是我的 FeedItemListAdapter class:

中的部分代码
var imageView = view.FindViewById<ImageView> (Resource.Id.ListviewImage);
Koush.UrlImageViewHelper.SetUrlDrawable (imageView, feedItem.Image);

我没有收到任何错误,但列表视图中没有显示图像。

您可能应该去阅读有关 some basic XPath syntax 的内容,因为您的表达式没有多大意义 - 它正在搜索名称为 url 且在由前缀 example 标识的名称空间管理器。听起来对吗?

假设你的元素是根元素并且它没有命名空间(这与你是否只给了我们一个片段无关),那么表达式应该是 enclosure/@url.

完成后,您需要保留对搜索该属性的结果的引用。目前,您只是将其丢弃,然后尝试在列表中的任意节点上获取 url 属性。

所以,类似于:

var url = xmlNode[i].SelectSingleNode("enclosure/@url", xmlNameSpaceManager);
feedItem.Image = url.Value;

总而言之,LINQ to XML 比旧的 XmlDocument API 好得多 API,LINQ to XML 好得多用于查询 XML 而不是 XPath。如果可以的话,我会调查一下。