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 中名称的排序列表,因此该字符串列表应包含:
- 另一个
- 手册-A
- 手动-B
- 手动-C
如何使用 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();
我得到了如下的 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 中名称的排序列表,因此该字符串列表应包含:
- 另一个
- 手册-A
- 手动-B
- 手动-C
如何使用 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();