2

我有以下 XElement:

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

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

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

有什么线索吗?

4

4 回答 4

4

您可以在 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;
于 2012-08-27T10:35:35.143 回答
2

您可以通过以下方式获取根元素:

XDocument.Root

这是一个实现示例:

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());

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

于 2012-06-15T12:44:59.303 回答
0

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

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

于 2012-06-15T12:45:09.220 回答
-1

将名称和属性复制到新元素;

var root = new XElement(el.Name, el.Attributes());
于 2014-08-15T11:19:13.817 回答