我有一个具有以下结构的 .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
路径中,您可以通过设置结果列表来完成,等待所需的通道 ID,开始收集值,然后在所需的通道 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"));
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)