gpt4 book ai didi

c# - 在 .NET 中循环遍历 XML?

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:46 25 4
gpt4 key购买 nike

我有一些类似于下面的 XML

<DriveLayout>
<Drive totalSpace="16" VolumeGroup="dg01" />
<Drive totalSpace="32" VolumeGroup="dg01" />
<Drive totalSpace="64" VolumeGroup="dg02" />
<Drive totalSpace="64" VolumeGroup="dg02" />
<VolumeGroups>
<VolumeGroup VolumeGroup="dg01" storageTier="1" />
<VolumeGroup VolumeGroup="dg02" storageTier="2" />
</VolumeGroups>
</DriveLayout>

我需要一种方法来返回 XML 并将属性 storageTier 添加到每个单独的 Drive 节点。有没有办法遍历每个驱动器节点并获取 VolumeGroup,然后从 VolumeGroup 节点中的 XML 中获取对应的存储层?然后我需要将正确的 storageTier 注入(inject)回 XML 驱动器节点。我正在使用 C# 中的 System.XML。

谢谢

任何帮助将不胜感激

最佳答案

可以使用 LINQ to XML 非常简洁地完成此任务。更重要的是,它使用简单的 LINQ 查询和字典来提供在线性时间内运行的算法。

var storageTiers = doc.Root.Element("VolumeGroups").Elements().ToDictionary(
el => (string)el.Attribute("VolumeGroup"),
el => (string)el.Attribute("storageTier"));
foreach (var driveElement in doc.Root.Elements("Drive"))
{
driveElement.SetAttributeValue("storageTier",
storageTiers[(string)driveEl.Attribute("VolumeGroup")]);
}

如果您使用的是 C# 3.0,那么这无疑是最好的方法(除非您的 XML 文件很大并且您需要高效率,这似乎不太可能)。

关于c# - 在 .NET 中循环遍历 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1161223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com