我使用下面的代碼:爲什麼我不能在命名空間上使用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