Namespaces XElement.后代不';不能使用名称空间

Namespaces XElement.后代不';不能使用名称空间,namespaces,xelement,Namespaces,Xelement,我有一个简单的XML <S xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><H></H></S> 我想找到所有的“H”节点 XElement x=XElement.Parse(“”); IEnumerable h=x.子代(“h”); 如果(h!=null) { } 但是这个代码不起作用。 当我从S标记中删除名称空间时,代码正常工作。您的元素具有名称空

我有一个简单的XML

<S xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><H></H></S>

我想找到所有的“H”节点

XElement x=XElement.Parse(“”);
IEnumerable h=x.子代(“h”);
如果(h!=null)
{
}
但是这个代码不起作用。
当我从S标记中删除名称空间时,代码正常工作。

您的元素具有名称空间,因为
xmlns
有效地为该元素及其子体设置了默认名称空间。请尝试以下方法:

XNamespace ns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
IEnumerable<XElement> h = x.Descendants(ns + "H");

我只是想在Jon的答案中添加一个名称空间,如下所示:

XNamespace ns = x.Name.Namespace
然后像他建议的那样使用它:

IEnumerable<XElement> h = x.Descendants(ns + "H");
IEnumerable h=x.subjects(ns+“h”);

顺便说一句,这个问题与WPF无关。。。
XNamespace ns = x.Name.Namespace
IEnumerable<XElement> h = x.Descendants(ns + "H");