C# 将XmlElement转换为包含元素的XElement(“ElementName”)不会返回任何结果

C# 将XmlElement转换为包含元素的XElement(“ElementName”)不会返回任何结果,c#,xml,xelement,C#,Xml,Xelement,我使用以下代码将xmlement转换为XElement public staic XElement ToXElement(this XmlNode node) { XElement element = null; if (null != node) { element = XElement.Parse(node.OuterXml); } return element; } 但是,当我调用Elements()或Elements(“ElementNa

我使用以下代码将
xmlement
转换为
XElement

public staic XElement ToXElement(this XmlNode node) {
    XElement element = null;
    if (null != node) {
        element = XElement.Parse(node.OuterXml);
    }
    return element;
}
但是,当我调用
Elements()
Elements(“ElementName”)
时,我没有得到任何结果。
但是,调用
节点()
确实会得到结果

为什么元素不是从调用元素中产生的?这两种方法之间的区别是什么

下面是我正在解析的一小部分xml

<Feature xmlns="http://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementFile Location="Path/file.xml"/>
    </ElementManifests>
</Feature>

您可能没有正确使用名称空间。这两种方法对我都适用:

XElement root = XElement.Load("test.xml"); //or result of ToXElement
foreach(var item in root.Elements())
{
    Console.WriteLine(item.Name);
}

XNamespace ns = "http://schemas.microsoft.com/sharepoint/";
var manifestsNode = root.Element(ns + "ElementManifests");
鉴于您不知道
元素()
(获取所有直接子元素)和
元素()
(获取一个特定的直接子元素)之间的区别,您应该从Linq到Xml教程开始。测试此代码:

var Status = xn["Feature"];
foreach (XmlElement element in Status) {
    XElement withoutXmlnsElement =RemoveAllNamespaces(XElement.Parse(element.OuterXml));
}

public static XElement RemoveAllNamespaces(XElement e) {
    return new XElement(e.Name.LocalName,
    (from n in e.Nodes()
    select ((n is XElement) ? RemoveAllNamespaces(n as XElement) : n)),
    (e.HasAttributes) ? (from a in e.Attributes() 
    where (!a.IsNamespaceDeclaration) select new     
    XAttribute(a.Name.LocalName,a.Value)) : null);
}

是否确定“ElementName”中没有输入错误?如果“ElementName”正确,元素是否有命名空间?如果是这样,我认为它应该在调用元素时出现(如果XML节点(作为文本)添加一个示例)。给我们一个node.OuterXml包含的XML示例。我熟悉System.XML.Linq,并且我没有使用
Load
我使用的是
Parse
,我认为这可能会有所不同。另外,命名空间也不是
Elements()的问题
仍应返回结果。是-
Elements()
应生成结果(使用示例xml对我来说确实如此)。加载和解析的结果实际上没有任何区别-一个用于从文件加载XML,另一个用于解析XML字符串。您能否验证您是否正在将完整的XML传递给
ToXElement
方法?这一定意味着我的问题实际上在别处,谢谢您的帮助。