【发布时间】:2013-02-20 19:17:45
【问题描述】:
我正在使用以下代码:
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 变量会返回为 null(result2 确实会返回为 XElement)。
这不应该工作吗?我是否设置了错误的命名空间?
【问题讨论】:
-
旁注:Policy 和 Activity 具有不同的命名空间,因此无法像您在
/Policy/Activity中尝试那样为两者指定单个命名空间前缀(您尝试为两者都使用空命名空间前缀,这在 XPath 中 总是 映射到空命名空间 - 请参阅 MiMo +1 答案)。
标签: c# xpath xml-namespaces linq-to-xml xelement