Я бы лично порекомендовал, чтобы вы не делали это с XPath, но можете, если действительно хотите.Вот короткая, но полная программа, которая работает с вашим образцом XML, после того, как я исправил его (на данный момент он недействителен для XML ... попробуйте привести рабочие примеры в следующий раз):
using System;
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
class Test
{
static void Main()
{
var doc = XDocument.Load("test.xml");
var manager = new XmlNamespaceManager(new NameTable());
manager.AddNamespace("foo", "TemplateXXX");
var query = doc.XPathSelectElement("/foo:Report/foo:HEADER", manager);
Console.WriteLine(query);
}
}
В обычном запросе LINQ to XML вы просто используете:
XNamespace ns = "TemplateXXX";
XElement header = doc.RootElement.Element(ns + "HEADER");
Нет необходимости в менеджере пространства имен и т. Д.