如何从Xelement中获取根元素

时间:2012-06-15 12:42:40

标签: xelement

我有以下XElement:

 <Assembly name="3">
  <Component name="2" /> 
 </Assembly>

我想获得根元素。 <Assembly name="3">我无法看到任何适合我的方法。

  XElement.????? I cant find XElement.Root;

有任何线索吗?

4 个答案:

答案 0 :(得分:3)

你可以在VB.NET中试试这个

Dim elm as XElment = XElement.Parse(<Assembly name="3">
                                     <Component name="2" /> 
                                    </Assembly>)

Dim strName as string 
strName = elm.AncestorsAndSelf.First.Name

C#中的代码

XElement elm = XElement.Parse("<Assembly name='3'><Component name='2' /></Assembly>");
string name =elm.AncestorsAndSelf().First().Name;

答案 1 :(得分:1)

您可以在其上调用RemoveNodes ...如果您因其他原因需要保留原始内容,请先创建副本。

目前还不清楚你要做的是什么。该元素在逻辑上包含其所有子元素 - 没有XElement.Root的概念,因为元素“本身”。 RemoveNodes将删除所有子节点,但如果您只想获取元素的名称或其属性,则可以在不更改结构的情况下执行此操作。

答案 2 :(得分:0)

这可能是一种方式:

XDocument doc = new XDocument(
new XComment("This is a comment."),
new XElement("Pubs", 
    new XElement("Book",
        new XElement("Title", "Artifacts of Roman Civilization"),
        new XElement("Author", "Moreno, Jordao")
    ),
    new XElement("Book",
        new XElement("Title", "Midieval Tools and Implements"),
        new XElement("Author", "Gazit, Inbar")
    )
),
new XComment("This is another comment.")
);
Console.WriteLine(doc.Root.Name.ToString());

link:http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.root.aspx

答案 3 :(得分:0)

复制名称&amp;属性为新元素;

var root = new XElement(el.Name, el.Attributes());