return Xelement 名称列表

return list of Xelement names

我得到了如下的 XDocument 结构:

<?xml version="1.0" encoding="utf-8"?>
<body>
 <ControlSettings>
  <Manual-B nudA="20" nudB="3" nud=D"4"  />
  <Manual-A nudA="2" nudB="33" nudD="4"  />
  <Manual-C nudA="20" nudB="20" nudD="40" />
  <another value="true"  />
 </ControlSettings>
 <Score>
  <Manual-F result="fail" />
 </Score>
</body>

我正在尝试你得到一个仅包含 controlsettings 中名称的排序列表,因此该字符串列表应包含:

如何使用 xpath / linq 对 Xdocuments 执行此操作? 我在下面尝试过,但它无法正常工作

IEnumerable <string> names =  doc.XPathSelectElements
("..//body//ControlSettings").Select(e => e.Name.LocalName);
   /* other things i tried:
   List<string>mnames = doc.Root.Element("..//controlsettings").
   var query = from x in doc.Descendants("//body//ControlSettings")
    */
 foreach (string localname in names)Console.WriteLine(localname);

您可以使用 Descendants

获取文档中的所有节点
xmlDoc.Descendants()
      .Where(e => e.Name.LocalName.Contains("Manual"))
      .Select(e => e.Name.LocalName)
      .OrderBy(e => e)
      .ToList();

或者,如果范围太广,而您想具体到 ControlSettings 组,则可以像下面那样向下挖掘

xmlDoc.Elements("ControlSettings")
      .Descendants()
      .Select(e => e.Name.LocalName)
      .OrderBy(e => e)
      .ToList();