我使用下面的代码:为什么我不能在命名空间上使用XML数据的XPath?
string testingXML = "<Policy><Activity xmlns=\"http://schemas.microsoft.com/netfx/2009/xaml/activities\"></Activity></Policy>";
var xmlReader = XmlReader.Create(new StringReader(testingXML));
var myXDocument = XDocument.Load(xmlReader);
var namespaceManager = new XmlNamespaceManager(xmlReader.NameTable);
namespaceManager.AddNamespace("", "http://schemas.microsoft.com/netfx/2009/xaml/activities");
var result = myXDocument.XPathSelectElement(
"/Policy/Activity",
namespaceManager
);
var result2 = myXDocument.XPathSelectElement(
"/Policy",
namespaceManager
);
,并试图用namespaceManager
以我的理解,应该帮助解决我的问题。但是,如果我运行上面的代码,则result
变量将返回为空(result2
确实会作为XElement返回)。
这是行不通的?我是否错误地设置了命名空间?
边注:政策和活动有不同的命名空间,所以没有办法指定既是你是单一命名空间前缀试图在'/ Policy/Activity'中执行(你尝试使用两个空的命名空间前缀,XPath *总是*映射到空的命名空间 - 请参阅MiMo +1答案)。 – 2013-02-20 19:35:52