XML Linq读取多个节点
本文关键字:节点 读取 Linq XML | 更新日期: 2023-09-27 18:24:00
我正试图从wordpress博客xml提要中提取数据,这是xml的格式:http://brockallen.com/category/asp-net/feed/
var xElements = XElement.Parse(ResponseText);
var blogs = (from temp in xElements.Elements()
select new
{
Title = temp.Element("item").Element("title").Value,
URL = temp.Element("item").Element("link").Value,
Image = temp.Element("item").Element("media:content").Value
}).FirstOrDefault();
我如何获取所有这些,并将它们存储到一个对象中?
media:content
上的错误是":"字符(十六进制值0x3A)不能包含在名称中
当我删除该行时,它只得到一行,当有更多行时,即使在删除FirstOrDefault()
之后也是如此
您在错误的文档级别上工作。此外,您还需要一个命名空间。
XNamespace media = "http://search.yahoo.com/mrss/";
var items =
from channelElement in XElement.Parse(ResponseText).Element("channel").Elements("item")
select new {
Title = channelElement.Element("title").Value,
Url = channelElement.Element("link").Value,
MediaItems = (
from mediaItemElement in channelElement.Elements(media + "content")
select new {
url = mediaItemElement.Attribute("url").Value,
medium = mediaItemElement.Attribute("medium").Value
}
).ToList()
};
试试这个。。。更新了用于查询content
元素的命名空间
// var xDoc = XDocument.Load(@"<your xml location>");
var xDoc = XDocument.Parse("<your xml string>");
XNamespace ns = "http://search.yahoo.com/mrss/";
var blogs = (from temp in xDoc.Descendants().Elements("item")
select new
{
Title = temp.Element("title").Value,
URL = temp.Element("link").Value,
Image = temp.Element(ns + "content").Value
});