任何人都可以指向解决方案的方向,从xml文件中获取数据。我通常在VB应用程序中使用XmlDocument,并且一直都是完美无缺的。
现在Windows Store应用程序不再支持xmlDocument了,当导入DOM但是XmlNode不可用时,som正在工作。然而,也许它只是我,但在我看来,XDocument在一个简单的XML文件中查找数据非常困难并且不是很逻辑。
之前我使用过这样的东西:
xmlDevices = xmlDoc.GetElementsByTagName("Device")
For Each xmlDevice As xmlElement In xmlDevices
Dim strDeviceName As String = xmlDevice.Item("DeviceName").InnerText
xmlModbuses = xmlDoc.GetElementsByTagName("Modbus")
For Each xmlModbus As xmlElement In xmlModbuses
Dim strModbusID As String = xmlModbus.Attributes("id").InnerText
Next
Next
我希望从以下内容中寻找数据的XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<Devices>
<Device id="01">
<DeviceName>VP18</DeviceName>
<Modbusees>
<Modbus id="01">1000</Modbus>
<Modbus id="02">2000</Modbus>
...
</Modbuses>
<Alarms>
<Alarm id="01">
<AlarmText>Test</AlarmText>
<AlarmType>Critical</AlarmType>
</Alarm>
<Alarm id="02">
<AlarmText>Test</AlarmText>
<AlarmType>Critical</AlarmType>
</Alarm>
</Alarms>
<Device id="02">
<DeviceName>VP19</DeviceName>
<Modbusees>
<Modbus id="01">1010</Modbus>
<Modbus id="02">2020</Modbus>
...
</Modbuses>
<Alarms>
<Alarm id="01">
<AlarmText>Test</AlarmText>
<AlarmType>Critical</AlarmType>
</Alarm>
<Alarm id="02">
<AlarmText>Test</AlarmText>
<AlarmType>Critical</AlarmType>
</Alarm>
</Alarms>
</Device>
</Devices>
最诚挚的问候 托马斯尼森
答案 0 :(得分:0)
我得到了以下工作。
Dim xDoc As XDocument = XDocument.Load(xmlStream.AsStreamForRead())
Dim xmlDevices = xDoc.Root.Elements("Device")
For Each xmlDevice In xmlDevices
If xmlDevice.Attribute("id").Value = RoamingSettings.Containers("Device").Values("DeviceID") Then
Dim xmlAlarms = xmlDevice.Descendants("Alarm")
For Each xmlAlarm In xmlAlarms
If xmlAlarm.Attribute("id").Value = strAlarmID Then
strAlarmDisp = xmlAlarm.Element("AlarmDisp").Value
strAlarmType = xmlAlarm.Element("AlarmType").Value
strAlarmDesc = xmlAlarm.Element("AlarmDesc").Value
strAlarmHelp = xmlAlarm.Element("AlarmHelp").Value
End If
Next
End If
Next