[c#]给出了 XML 文档,如何你能列出所有属性和服从命令的 xml 文档的元素

标签: Linq XML C#
发布时间: 2017/2/28 23:09:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

给出下面的 XML:

<Student number=2020 >
<Subject>Comp<Subject>
<Credintials>
<Password>....</Password>
</Credintials>
<PersonalDetails age=30 height=2/>
</Student>

我想要︰

Student
@number
Subject
Credintials
Password
PersonalDetails
@age
@height

按此顺序。

所以基本上,如果我将解析这个 XDocument,我分别获得元素和属性分别,不服从的 xml 层次结构。

   var attributes = xDocument.Descendants().Attributes();
   var elements = xDocument.Descendants().Elements();

我把这单独循环集中因此我得到第一属性,然后元素

是否有任何方法列出使用上述的顺序?

解决方法 1:

你可能只是以递归方式返回的元素名称、 属性名称和子元素︰

public IEnumerable<string> GetNodes(XElement xe)
{
   yield return xe.Name.ToString();
   foreach(XAttribute xa in xe.Attributes())
      yield return ("@"+xa.Name);
   foreach(XElement xee in xe.Elements())
      foreach(var s in GetNodes(xee))
          yield return s;

}

使用方法︰

string xml = @"<Student number='2020'>
    <Subject>Comp</Subject>
    <Credintials>
    <Password>....</Password>
    </Credintials>
    <PersonalDetails age='30' height='2'/>
    </Student>";

XDocument x = XDocument.Parse(xml);
var nodes = GetNodes(x.Root);

结果︰

IEnumerable<String> (8 items)
------------------------------ 
Student 
@number 
Subject 
Credintials 
Password 
PersonalDetails 
@age 
@height 
赞助商