LINQ to XML:应用 XPath
有人能告诉我为什么这个程序没有枚举任何项目吗?它与 RDF 命名空间有关系吗?
using System;
using System.Xml.Linq;
using System.Xml.XPath;
class Program
{
static void Main(string[] args)
{
var doc = XDocument.Load("http://seattle.craigslist.org/sof/index.rss");
foreach (var item in doc.XPathSelectElements("//item"))
{
Console.WriteLine(item.Element("link").Value);
}
Console.Read();
}
}
Can someone tell me why this program doesn't enumerate any items? Does it have something to do with the RDF namespace?
using System;
using System.Xml.Linq;
using System.Xml.XPath;
class Program
{
static void Main(string[] args)
{
var doc = XDocument.Load("http://seattle.craigslist.org/sof/index.rss");
foreach (var item in doc.XPathSelectElements("//item"))
{
Console.WriteLine(item.Element("link").Value);
}
Console.Read();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,这绝对与名称空间有关 - 尽管它是 RSS 名称空间,而不是 RDF 名称空间。您正在尝试查找没有命名空间的项目。
在 .NET 中的 XPath 中使用命名空间有点棘手,但在本例中,我只需使用 LINQ to XML 后代方法即可:
Yes, it's absolutely about the namespace - although it's the RSS namespace, not the RDF one. You're trying to find items without a namespace.
Using a namespace in XPath in .NET is slightly tricky, but in this case I'd just use the LINQ to XML
Descendants
method instead: