使用c#解析带有冒号的xml标签
本文关键字:xml 标签 使用 | 更新日期: 2023-09-27 17:52:55
我在Xamarin工作在一个android应用程序这是从这个网站解析xml: http://video.cazin.net/rss.php,并填充listview,特别是我有一个问题从这个标签获取值:
<media:thumbnail url="http://video.cazin.net/uploads/thumbs/2d07f1e49-1.jpg" width="480" height="360"/>
我创建了命名空间:
xmlNameSpaceManager.AddNamespace("ab", "http://search.yahoo.com/mrss/");
然后尝试从url属性中获取值:
XmlNodeList xmlNode = document.SelectNodes("rss/channel/item");
if (xmlNode[i].SelectSingleNode("//ab:thumbnail[@url='http://video.cazin.net/rss.php']", xmlNameSpaceManager) != null)
{
var thumbnail = xmlNode[i].SelectSingleNode("//ab:thumbnail=[@url='http://video.cazin.net/rss.php']", xmlNameSpaceManager);
feedItem.Thumbnail = thumbnail.Value;
}
我也试过这样做:
//ab:thumbnail/@url
但是我得到了第一个图像的值。我确信问题是在这里的某个地方,因为我有相同的代码从另一个xml标签没有冒号的图像,它的工作正常。有没有人有类似的经历,知道我应该在牙套里放什么?由于
您当前的查询正在搜索url
属性等于http://video.cazin.net/rss.php
的thumbnail
元素-没有与此匹配的元素
您的"我也尝试过"//ab:thumbnail/@url
的查询更接近,但//
意味着查询将从文档的根开始,因此您获得所有url(但您只采取第一个)。
如果您希望匹配的元素考虑到当前节点上下文,则需要在查询中包含当前节点上下文—这由.
表示。因此,.//ab:thumbnail/@url
将在当前节点包含的thumbnail
元素中找到所有url
属性。您可以在下面查看结果。
XmlDocument
API好用得多。例如,您可以使用以下代码查找所有项目缩略图url:
var doc = XDocument.Load("http://video.cazin.net/rss.php");
XNamespace media = "http://search.yahoo.com/mrss/";
var thumbnailUrls = doc.Descendants("item")
.Descendants(media + "thumbnail")
.Attributes("url");