Ваше выражение XPath ищет элементы "Контакты", "Автор" и "Имя_папки" без пространств имен .Похоже, элемент Author
(и любые элементы-потомки, у которых нет объявления пространства имен) do имеют пространства имен, не соответствует ли ваше выражение XPath.
Чтобы исправитьвам нужно будет использовать XmlNamespaceManager
, связать префикс с пространством имен и включить это пространство имен в выражение XPath.Честно говоря, это становится грязно.
Есть ли причина, по которой вы не можете использовать LINQ to XML вместо этого?Это значительно упрощает работу с XML в целом и пространствами имен в частности.Я рад предложить образец LINQ to XML, если вы сможете его использовать.
РЕДАКТИРОВАТЬ: Вот пример LINQ to XML:
XDocument doc = XDocument.Load("authors.xml");
XNamespace ns = "http://www.w3.org/1999/xhtml";
var query = doc.Root
.Elements(ns + "Author")
.Elements(ns + "FirstName");
foreach (var element in query)
{
Console.WriteLine((string) element);
}