【发布时间】:2020-12-02 19:42:42
【问题描述】:
假设我有以下 xml 文件:
<ModuleSets>
<ServiceModuleSet Name="serverModules">
<Modules>
<ServiceModule Name="ServerModule1"/>
<ServiceModule Name="ServerModule2"/>
</Modules>
</ServiceModuleSet>
<ServiceModuleSet Name="testBenchModules">
<Modules>
<ServiceModule Name="testBenchModule1"/>
<ServiceModule Name="testBenchModule2"/>
</Modules>
</ServiceModuleSet>
<ServiceModuleSet Name="hostComputerModules">
<Modules>
</Modules>
</ServiceModuleSet>
</ModuleSets>
我想从ServiceModule 节点获取所有属性,方法是在ServiceModuleSet 节点中搜索,其中属性名称等于"serverModules"。
我是 LINQ 新手并尝试了以下代码:
IEnumerable<string> allServerModules = from item in xmlDocument.Descendants("ServiceModuleSet")
where item.Descendants("ServiceModuleSet").Any(attribute => attribute.Value == "serverModules")
select (string)item.Attribute("Name");
foreach (var serverModule in allServerModules)
{
Console.WriteLine(serverModule);
}
很遗憾,我没有将任何结果打印到控制台。使用 LINQ 解决它的正确方法是什么?
【问题讨论】:
标签: c# xml linq linq-to-xml