gpt4 book ai didi

c# - 从 C# 中的 .xml 文件获取多个属性

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

我有一个具有以下结构的 .xml 文件。我想获取特定 EndPointChannelID 的属性值 0.05 等。我目前能够获得该值,但它适用于每个 EndPointChannelID 而不是所需的值。另一个问题是读数并不总是 6。我怎样才能实现只存储来自所需 EndPointChannelID 的值?任何建议将不胜感激!

    <Channel ReadingsInPulse="false">
<ChannelID EndPointChannelID="5154131" />
<ContiguousIntervalSets>
<ContiguousIntervalSet NumberOfReadings="6">
<TimePeriod EndRead="11386.22" EndTime="2013-01-15T02:00:00Z"/>
<Readings>
<Reading Value="0.05" />
<Reading Value="0.04" />
<Reading Value="0.05" />
<Reading Value="0.06" />
<Reading Value="0.03" />
<Reading Value="0.53" />
</Readings>
</ContiguousIntervalSet>
</ContiguousIntervalSets>
</Channel>

下面是我必须找到值的当前代码。

        XmlReader reader = XmlReader.Create(FileLocation);
while (reader.Read())
{
if((reader.NodeType == XmlNodeType.Element) && (reader.Name == "Reading"))
{
if (reader.HasAttributes)
{
MessageBox.Show(reader.GetAttribute("Value"));
}
}
}

最佳答案

继续XMLReader路径,可以通过设置一个result list,等待需要的channel ID,开始收集值,然后在需要的channel ID标签结束时结束收集:

var values = new List<string>();
var collectValues = false;
var desiredChannelId = "5154131";
while (reader.Read())
{
if((reader.NodeType == XmlNodeType.Element))
{
if (reader.Name == "ChannelID" && reader.HasAttributes) {
collectValues = reader.GetAttribute("EndPointChannelID") == desiredChannelId;
}
else if (collectValues && reader.Name == "Reading" && reader.HasAttributes)
{
values.Add(reader.GetAttribute("Value"));
}
}
}

关于c# - 从 C# 中的 .xml 文件获取多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15908191/

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