c# - 如何迭代实际节点和后代?
问题描述
我有这个 xml 文件:
<Assemblies>
<Assembly Name="MyMainAssambly.exe" Version="1.7.0.0" Path="x:\MyMainAssemby.exe" >
<NeededAssemblies>
<Assembly Name="Aseembly01.dll" Version="1.1.1.1" Path="x:\Assembly01.dll"/>
<Assembly Name="Aseembly02.dll" Version="2.2.2.2" Path="x:\Assembly02.dll"/>
<Assembly Name="Aseembly03.dll" Version="3.3.3.3" Path="x:\Assembly03.dll"/>
</NeededAssemblies>
</Assembly>
</Assemblies>
我想迭代所有这些来完成一些任务。所以我正在尝试使用此代码:
XElement myMainAssembly = miDocumentoXml.Root.Elements("Assembly")
.Where(x => x.Attribute("Name").Value == "MyMainAssembly.exe"
&& x.Attribute("Version").Value.StartsWith("1.7.0.0"))
.FirstOrDefault();
foreach (XElement nodeIterator in myMainAssembly.DescendantNodesAndSelf())
{
//Do some code with the nodes Assembly01.dll, Assembly02.dll and Assembly, using the name, version and path.
string miStrAssemblyName = nodeIterator .Attribute("Name").Value;
}
但是如果我调试并设置一个断点,我可以看到所有元素的属性 HasAttributes 都是 false。为什么?因为在 xml 中所有元素都有 3 个属性。事实上,在代码的第一部分,我得到了我的主程序集,我可以使用 Attribute("Name") 来获得主程序集的名称。但后来在 foreach 中我不能。
所以我想知道如何迭代元素并获取属性的信息。
谢谢。
解决方案
推荐阅读
- ldap - Tuleap LDAP 错误编号:32
- c# - How to invoke C# method from PowerShell whose signature has parameters marked with 'params'
- mysql - 在 MySQL 中显示用户的结果摘要
- arrays - How to convert a string() to a string
- python - 使用 AutoKeras 时 Google Colab Runtime 死机
- python - 展开字典键并转换为 int
- javascript - AngularJS:如何在组件中使用回调?
- c - 难以创建“独立”编译器
- ios - Close and Then Open iOS Application to Specific ViewController
- unity3d - (统一)获取鼠标位置的RGB?