将XDocument转换为XElement

22

如何将XDocument转换为XElement?

我通过搜索找到了以下内容,但它是将XDocument和XmlDocument之间进行转换,而非XDocument和XElement。

public static XElement ToXElement(this XmlElement xmlelement)
{
    return XElement.Load(xmlelement.CreateNavigator().ReadSubtree());
}

public static XmlDocument ToXmlDocument(this XDocument xdoc)
{
    var xmldoc = new XmlDocument();
    xmldoc.Load(xdoc.CreateReader());
    return xmldoc;
}

我找不到任何将XDocument转换为XElement的方法。希望得到帮助。


1
你为什么想要将XDocument转换为XElement? - Diego
4
你只想要根元素吗?xdoc.Root就可以了。 - JohnD
2
“这不是有用的”并不能很好地解释问题(除非它是自我评估帖子质量,但那应该是评论 :))。同时请检查您的键盘——它似乎吃掉了“you”的一些字符... - Alexei Levenkov
现在你想要将 XmlDocument 转换为 XmlElement - psubsee2003
1
еҸӘйңҖеғҸPawelе’ҢJohnDжүҖиҜҙзҡ„йӮЈж ·иҺ·еҸ–.Rootе…ғзҙ еҚіеҸҜгҖӮжҲ‘ж·»еҠ дәҶдёҖдёӘжҳҺзЎ®зҡ„д»Јз ҒзӨәдҫӢзӯ”жЎҲпјҢд»Ҙдҫҝжё…жҘҡжҳҺдәҶгҖӮ - Bobson
显示剩余6条评论
3个回答

38

其他人已经说过了,但这里明确给出一个将XDocument转换为XElement的示例:

 XDocument doc = XDocument.Load(...);
 return doc.Root;

5
@Pawel - 是的,但我感觉需要非常明确地表达,用简单的代码示例来解释,因为提问者仍在寻找答案。 - Bobson
2
不要忘记,这是在同一引用上操作的,即如果您编辑了结果XElement,则更改也会反映在XDocument doc上。这可能是需要的,也可能不是。 - nawfal

30

XDocument转换为XmlDocument:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xdoc.CreateReader());

转换XmlDocument为XDocument

XDocument xDoc = XDocument.Load(new XmlNodeReader(xmlDoc));

要从XDocument中获取根元素,您可以使用xDoc.Root


8

将XDocument转换为XElement的简单方法

XElement cvtXDocumentToXElement(XDocument xDoc)
{
    XElement xmlOut = XElement.Parse(xDoc.ToString());
    return xmlOut;
}

1
不要忘记,这将创建一个全新的XElement实例,即对XElement所做的更改不会反映在XDocument上。这可能是需要的,也可能不是。 - nawfal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接