我有以下详细信息,包括xml文件。
<?xml version="1.0" encoding="utf-8"?>
<LoadSurveyValues>
<LoadSurvey timeStamp="18/12/2015 11:13:02" saveMode="SnapShot">
<Date Date="18/12/2015 00:00:00">
<ParamValues Type="ActiveTotalImport" Unit="kWh">
<SipValues Time="00:15" ParamValue="0" />
<SipValues Time="00:30" ParamValue="0" />
<SipValues Time="00:45" ParamValue="0" />
<SipValues Time="01:00" ParamValue="0" />
<SipValues Time="01:15" ParamValue="0.5" />
<SipValues Time="01:30" ParamValue="0.1" />
<SipValues Time="01:45" ParamValue="0" />
<SipValues Time="02:00" ParamValue="0" />
<SipValues Time="02:15" ParamValue="0" />
<SipValues Time="02:30" ParamValue="0" />
等等
我想在“Date”日期18/12/2015找到“ParamValue”属性值,“ParamValues”类型为ActiveTotalImport“和”SipValue“时间01:15。该结果应为0.5。
这些是我在VB.net中使用列表框尝试的代码。
Dim xr As XmlReader = XmlReader.Create("meter 01.xml")
If ListBox1.SelectedIndex >= 0 Then
If ListBox2.SelectedIndex >= 0 Then
If ListBox3.SelectedIndex >= 0 Then
If xr.NodeType = XmlNodeType.Element And xr = ListBox1.SelectedIndex And xr = ListBox2.SelectedIndex And xr = ListBox3.SelectedIndex Then
ListBox4.Items.Add(xr.GetAttribute(1))
End If
End If
End If
End If
ListBox1选择了18/12/2015 00:00:00值,ListBox2选择了ActiveTotalImport值,ListBox3选择了01:15值。因此结果是向ListBox4添加0.5值。但是这段代码不起作用请帮我解决一下
答案 0 :(得分:0)
试试xml linq
Imports System.Xml
Imports System.Xml.Linq
Module Module1
Const FILENAME As String = "c:\temp\test.xml"
Sub Main()
Dim doc As XDocument = XDocument.Load(FILENAME)
Dim survey As XElement = doc.Descendants("LoadSurvey").Where(Function(x) x.Attribute("timeStamp").Value = "18/12/2015 11:13:02").FirstOrDefault()
Dim ParamValue As String = survey.Descendants("SipValues").Where(Function(x) x.Attribute("Time").Value = "01:15").Select(Function(y) y.Attribute("ParamValue")).FirstOrDefault()
End Sub
End Module