Проблема в том, что ваш XPath не указывает пространства имен (поэтому вы на самом деле ищете имена с пустыми URI пространства имен). Учитывая, что feed
является элементом верхнего уровня, это довольно тривиальный запрос - я не думаю, что использование XPath действительно помогает вам здесь. Попробуйте вместо этого, используя XmlElement.GetElementsByTagName
:
XmlElement root = doc.DocumentElement;
String atomUri = "http://www.w3.org/2005/Atom";
foreach (XmlElement element in root.GetElementsByTagName("entry", atomUri))
{
// Use element here
}
(Если вы получаете возможность использовать .NET 3.5, я предлагаю вам начать использовать LINQ to XML - это намного приятнее:)
РЕДАКТИРОВАТЬ: Вот короткая, но полная программа, распечатывающая атрибут url
каждого элемента content
:
using System;
using System.Xml;
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load("test.xml");
XmlElement root = doc.DocumentElement;
String atomUri = "http://www.w3.org/2005/Atom";
String mediaUri = "http://search.yahoo.com/mrss/";
foreach (XmlElement entry in root.GetElementsByTagName("entry", atomUri))
{
foreach (XmlElement group in
entry.GetElementsByTagName("group", mediaUri))
{
foreach (XmlElement content in
entry.GetElementsByTagName("content", mediaUri))
{
Console.WriteLine(content.Attributes["url"].Value);
}
}
}
}
}